从列表内容(值)和顺序字母作为键构建字典
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]
.
创建一个字典
尝试遍历一个列表(长度未知)并构建一个字典,其值为列表内容和按顺序分配的键(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]
.