在字典中设置多个键/值(python 2.72)
我有一个字符串列表。我愿意创建一个字典,它的键是列表中的所有字符串(每个字符串当然是一个键) 现在来看值:每个键对应的值将是列表中键字符串之后的字符串。这些值将来自列表类型 备注:最后一个单词将不包括在词典中。 钥匙不会在驾驶员信息中心上出现两次。如果某个键有多个值,它们将被添加到该键的exist值列表中。 顺序无关紧要(如果字典使工作更容易,它就不能被排序) 例如:在字典中设置多个键/值(python 2.72),python,list,dictionary,key,Python,List,Dictionary,Key,我有一个字符串列表。我愿意创建一个字典,它的键是列表中的所有字符串(每个字符串当然是一个键) 现在来看值:每个键对应的值将是列表中键字符串之后的字符串。这些值将来自列表类型 备注:最后一个单词将不包括在词典中。 钥匙不会在驾驶员信息中心上出现两次。如果某个键有多个值,它们将被添加到该键的exist值列表中。 顺序无关紧要(如果字典使工作更容易,它就不能被排序) 例如: 名单如下: List = ['today','is','worm','and','dry'] 词典将是: Dic={'to
- 名单如下:
List = ['today','is','worm','and','dry']
- 词典将是:
Dic={'today': ['is'], 'is': ['worm'],'worm': ['and'], 'and':['dry']}
lst = ['today','is','worm','and','dry']
dic = {}
for k in xrange(len(lst) - 1):
dic[lst[k]] = [lst[k+1]]
这是一个有效的答案,因为它不会为构建字典创建任何附加列表。您可以检查结果,这是预期的结果:
dic == {'today': ['is'], 'is': ['worm'],'worm': ['and'], 'and':['dry']}
> True
不是很好,但它正在工作
>>> List = ['today','is','worm','and','dry']
>>> Dic ={}
>>> key = None
>>> for item in List:
... if key:
... Dic.update({key:item})
... key=item
...
>>> Dic
{'and': 'dry', 'is': 'worm', 'worm': 'and', 'today': 'is'}
>>>
(基于@eumiro的回答)
您可以通过以下代码实现它:
Dic = dict((key, [item]) for key, item in zip(List, List[1:]))
结果如下:
>>> Dic
{'and': ['dry'], 'is': ['worm'], 'worm': ['and'], 'today': ['is']}
如果您需要更高性能的解决方案,您可以使用izip()
函数:
from itertools import izip
Dic = dict((key, [item]) for key, item in izip(List, List[1:]))
这将产生相同的结果,但以更有效的方式
但是请遵循Python的命名约定(例如,将变量称为
my_dict
和my_list
,但最好给它们更具意义的名称),并且不要覆盖list
和dict
关键字(如果您想给变量这样的名称)实际上,我相信w1的d=dict((w1,[w2]),w2在zip中(l,l[1:])
就足够了,因为它会分配{'and':['dry'],'is':['worm'],'worm':['and'],'today':['is']}
到d
@Tadeck-这种情况下可以,但是如果你不能分配更多的项目,这个列表就没有任何意义了。你错了,词典是可编辑的,其中的每个列表也是可编辑的。例如,你可以做d['和'].append('something')
,你的d
将等于{'and':['dry','something'],'is':['worm'],'worm':['and'],'today':['is']}
。如果我使用元组,情况会有所不同,但我没有。我真的不理解你的推理——我的代码更短,解决了问题,做了你说它做不到的事情。请澄清。
>>> Dic
{'and': ['dry'], 'is': ['worm'], 'worm': ['and'], 'today': ['is']}
from itertools import izip
Dic = dict((key, [item]) for key, item in izip(List, List[1:]))