Pythonic方法从列表中创建独立列表?

tag*_*oma 3 python list python-3.x python-3.4

(我在这个网站上搜索+互联网,但找不到答案)

我从以下开始:

myList = ['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)

我想得到一些pythonic相当于的东西

a = []
b = []
c = []
Run Code Online (Sandbox Code Playgroud)

要么

a, b, c = ([] for i in range(3))
Run Code Online (Sandbox Code Playgroud)

那就是我想创建与原始列表中的元素一样多的列表,并使用(赋值?)原始列表中的元素作为创建列表的名称.

请问有什么建议吗?

The*_*nse 6

字典对于这种情况听起来很完美

码:

myList = ['a', 'b', 'c']
dict_var=dict()
for key in myList:
    dict_var[key]=list()
print dict_var
Run Code Online (Sandbox Code Playgroud)

输出:

{'a': [], 'c': [], 'b': []}
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 您仍然可以使用变量列表执行所有操作 append,extend etc.,.

  • 除非绝对必要,否则@VigneshKalai`fromkeys`不应与可变对象一起使用.它只对所有键使用相同的对象,因此所有值都是同一个列表. (2认同)

the*_*eye 6

您可以简单地创建列表字典,而不是创建新变量,然后您可以使用名称访问各个列表,如下所示

>>> myList = ['a', 'b', 'c']
>>> myDict = {item: [] for item in myList}
>>> myDict
{'c': [], 'a': [], 'b': []}
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用这样的列表

>>> myDict['a'].append(1)
>>> myDict['b'].append(2)
>>> myDict['c'].append(3)
>>> myDict
{'c': [3], 'a': [1], 'b': [2]}
Run Code Online (Sandbox Code Playgroud)


fur*_*ras 5

Pythonic方式是使用字典

myDict = {'a': [], 'b':[], 'c':[]}

myDict['a'].append("hello world")
print myDict['a'][0] # hello world
Run Code Online (Sandbox Code Playgroud)

您可以使用列表来创建它

myList = ['a', 'b', 'c']

myDict = {}
for x in myList:
   myDict[x] = []
Run Code Online (Sandbox Code Playgroud)