Sup*_*ing 77 python dictionary list
我有两个相同长度的列表:
[1,2,3,4] 和 [a,b,c,d]
我想创建一个我所拥有的字典 {1:a, 2:b, 3:c, 4:d}
最好的方法是什么?
agf*_*agf 133
dict(zip([1,2,3,4], [a,b,c,d]))
Run Code Online (Sandbox Code Playgroud)
如果列表很大,你应该使用itertools.izip.
如果您有多个键而不是值,并且您想要填写额外键的值,则可以使用itertools.izip_longest.
这里a,b,c,和d是变量-它会正常工作(只要它们被定义),但你可能是指['a','b','c','d'],如果你希望他们为字符串.
zip 从每个iterable中获取第一个项目并生成一个元组,然后从每个迭代中获取第二个项目,等等.
dict 可以采用迭代的迭代,其中每个内部迭代有两个项 - 然后使用第一个作为键,第二个作为每个项的值.
Jos*_*Lee 13
>>> dict(zip([1, 2, 3, 4], ['a', 'b', 'c', 'd']))
{1: 'a', 2: 'b', 3: 'c', 4: 'd'}
Run Code Online (Sandbox Code Playgroud)
如果它们的大小不同,zip则会截断较长的一个.
dict(zip([1,2,3,4], ['a', 'b', 'c', 'd']))
Run Code Online (Sandbox Code Playgroud)
http://docs.python.org/library/functions.html
如果第一个列表中有重复的键映射到第二个列表中的不同值,如一对多关系,但您需要组合或添加值或其他内容而不是更新,您可以这样做:
i = iter(["a", "a", "b", "c", "b"])
j = iter([1,2,3,4,5])
k = list(zip(i, j))
for (x,y) in k:
if x in d:
d[x] = d[x] + y #or whatever your function needs to be to combine them
else:
d[x] = y
Run Code Online (Sandbox Code Playgroud)
在那个例子中, d == {'a': 3, 'c': 4, 'b': 8}
我不知道最好的(最简单?最快?最具可读性?),但一种方法是:
dict(zip([1, 2, 3, 4], [a, b, c, d]))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
85498 次 |
| 最近记录: |