2017-04-25 50 views
1

假设我有一个名为“收藏”列表:如何从列表中提取项目并将它们用作新的列表集合的名称?

Collection = ['a','b','c','d'] 

从这个名单,我想创建4所列出:

a_list = [] 
b_list = [] 
c_list = [] 
d_list = [] 

有没有办法做这样的事情了如下创建以上4个列表?

for item in Collection: 
    item_list = [] 
+3

使用*另一个容器*像一个'字典' –

+0

@ juanpa.arrivillaga:感谢您的快速回复..你能详细说明更多吗? – Lam

+1

使用'dict',不要动态地命名变量。您最终会使用全局名称空间字典,但是,您最好使用自己的字典。 –

回答

3

一般情况下,它被认为是一个坏主意,使变量名的动态,这就是为什么没有容易方法来做到这在Python(及其他语言)。

你可以得到的最接近的事是通过使用字典:

c = ['a', 'b', 'c', 'd'] 
dict_with_new_lists = {item: [] for item in c} 
# Now contains: {'a': [], 'c': [], 'b': [], 'd': []} 

我们访问列表:

some_variable = 'a' 
print(dict_with_new_lists[some_variable]) 
# etc... 
+0

defaultdict更好! – anati

+1

@anati只有当你想'defaultdict'行为。 –

+0

@ juanpa.arrivillaga我不认为它适用于像在答案中那样手动编写创建词典,假设列表很大。 – anati

1

我认为最好的办法是定义为默认字典:

from collections import defaultdict 

collection_dict = defaultdict(list) 

示例:

from collections import defaultdict 

collection_dict = defaultdict(list) 

Collection = ['a','b','c','d'] 
for elt in Collection: 
    collection_dict[elt].append('sample') 
print(collection_dict) 

> defaultdict(<class 'list'>, {'d': ['sample'], 'a': ['sample'], 'c': 
> ['sample'], 'b': ['sample']}) 
+1

明白了!谢谢@anati:我想为你的回答和评论加个复选标记并竖起大拇指,但是我的声望太低了.. – Lam

相关问题