How do I combine two lists into a dictionary in Python?
本问题已经有最佳答案,请猛点这里访问。
我有两个相同长度的列表:
我想创建一个字典,在那里我有
最好的方法是什么?
1 | dict(zip([1,2,3,4], [a,b,c,d])) |
如果列表很大,您应该使用
如果键多于值,并且要为额外键填充值,则可以使用
在这里,
1 2 | >>> dict(zip([1, 2, 3, 4], ['a', 'b', 'c', 'd'])) {1: 'a', 2: 'b', 3: 'c', 4: 'd'} |
如果大小不一样,
1 | dict(zip([1,2,3,4], ['a', 'b', 'c', 'd'])) |
http://docs.python.org/library/functions.html网站
如果第一个列表中有重复的键映射到第二个列表中的不同值,例如一对多关系,但您需要组合或添加值或进行某些操作而不是更新,则可以执行以下操作:
1 2 3 4 5 6 7 8 | 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 |
在这个例子中,
我不知道什么是最好的(最简单的?最快的?最可读?)但有一种方法是:
1 | dict(zip([1, 2, 3, 4], [a, b, c, d])) |
我发现自己需要创建一个包含三个列表(纬度、经度和值)的字典,并使用以下方法:
1 2 3 4 5 | > lat = [45.3,56.2,23.4,60.4] > lon = [134.6,128.7,111.9,75.8] > val = [3,6,2,5] > dict(zip(zip(lat,lon),val)) {(56.2, 128.7): 6, (60.4, 75.8): 5, (23.4, 111.9): 2, (45.3, 134.6): 3} |
或类似于上述例子:
1 2 3 4 5 | > list1 = [1,2,3,4] > list2 = [1,2,3,4] > list3 = ['a','b','c','d'] > dict(zip(zip(list1,list2),list3)) {(3, 3): 'c', (4, 4): 'd', (1, 1): 'a', (2, 2): 'b'} |
注意:字典是"无顺序的",但是如果您想将其视为"排序的",请参考此问题(如果您想按关键字排序),或者如果您想按值排序,请参考此问题。