从列表内容(值)和顺序字母作为键构建字典

Build dictionary from list contents (values) and sequential letters as keys

尝试遍历一个列表(长度未知)并构建一个字典,其值为列表内容和按顺序分配的键(a、b、c 等)

我已经做到了:

>>> import itertools; import string
>>> names = ['bob', 'fred', 'tracy'] 
>>> abc = string.ascii_lowercase
>>> letter = itertools.cycle(abc)
>>> [ dict(zip(letter.next(), n)) for n in names ]
[{'a': 'b'}, {'b': 'f'}, {'c': 't'}]

当我想要的时候

[{'a': 'bob'}, {'b': 'fred'}, {'c': 'tracy'}]

你可以这样简单地做到:

>>> [dict(zip(letter, names))]
[{'a': 'bob', 'c': 'tracy', 'b': 'fred'}]
names = ['bob', 'fred', 'tracy'] 
abc = string.ascii_lowercase
dct={}
for x,y in zip(abc,names):
    dct[x]=y
print (dct)

同样有效。您不必担心它的长度(正如@AshwiniChaudhary 所说,我们假设您已经知道您只能使用 26 个项目,因为这是英文字母表的长度)。 zip() 一一匹配定义的函数 key/value of dict. 输出:

>>> 
{'a': 'bob', 'b': 'fred', 'c': 'tracy'}
>>> 

或者单行;

a=[dict(zip(abc, names))]
print (a)

差不多! zip 打破了你的名字,所以你可以将 2 元组的列表传递给 dict,像这样:

>>> [ dict([(next(letter), n)]) for n in names ]
[{'a': 'bob'}, {'b': 'fred'}, {'c': 'tracy'}]

或者,您可以使用字典理解来构建每个字典,从而保存一些样板文件内容:

>>> [ { next(letter): n } for n in names ]
[{'a': 'bob'}, {'b': 'fred'}, {'c': 'tracy'}]

请注意,我使用的是 next 而不是 iterator.next,因为这就是现在使用迭代器的方式。

from itertools import izip, cycle
from string import ascii_lowercase as letters
names = ['bob', 'fred', 'tracy'] 
[{k[0]:k[1]} for k in izip(cycle(letters),names)]

izip returns 像这样的元组:('a' , 'bob') 然后你可以简单地使用 k[0]k[1].

创建一个字典