将两个列表组合成python中的字典

时间:2014-10-09 02:13:09

标签: python list dictionary

例如,如果我有两个列表:

listA = [1, 2, 3, 4, 5]
listB = [red, blue, orange, black, grey]

我正在试图弄清楚如何在两列中显示两个参数列表中的元素, 分配1: red, 2: blue...等等。

必须在不使用内置zip函数的情况下完成此操作。

5 个答案:

答案 0 :(得分:6)

 >>> listA = [1, 2, 3, 4, 5]
 >>> listB = ["red", "blue", "orange", "black", "grey"]
 >>> dict(zip(listA, listB))
 {1: 'red', 2: 'blue', 3: 'orange', 4: 'black', 5: 'grey'}

答案 1 :(得分:3)

如果你不能使用zip,请进行for循环。

d = {} #Dictionary

listA = [1, 2, 3, 4, 5]
listB = ["red", "blue", "orange", "black", "grey"]

for index in range(min(len(listA),len(listB))):
    # for index number in the length of smallest list
    d[listA[index]] = listB[index]
    # add the value of listA at that place to the dictionary with value of listB

print (d) #Not sure of your Python version, so I've put d in parentheses

答案 2 :(得分:2)

特别教师版:

list_a = [1, 2, 3, 4, 5]
list_b = ["red", "blue", "orange", "black", "grey"]

for i in range(min(len(list_a), len(list_b))):
    print list_a[i], list_b[i]

答案 3 :(得分:1)

我怀疑你的老师要你写一些像

这样的东西
for i in range(len(listA)):
    print listA[i], listB[i]

然而,这在Python中是令人厌恶的。

以下是不使用zip

的一种方法
>>> listA = [1, 2, 3, 4, 5]
>>> listB = ["red", "blue", "orange", "black", "grey"]
>>> 
>>> b_iter = iter(listB)
>>> 
>>> for item in listA:
...     print item, next(b_iter)
... 
1 red
2 blue
3 orange
4 black
5 grey

然而zip 是解决这个问题的自然方法,你的老师应该教你这么想

答案 4 :(得分:0)

通常,zip是解决问题的最佳方法。但由于这是一项家庭作业,而您的老师不允许您使用zip,我认为您可以从此页面中获取任何解决方案。

我提供了一个使用lambda函数的版本。请注意,如果两个列表的长度不同,则会在相应位置打印None

>>> list_a = [1, 2, 3, 4, 5]
>>> list_b = ["red", "blue", "orange", "black", "grey"]
>>> for a,b in map(lambda a,b : (a,b), list_a, list_b):
...     print a,b
... 
1 red
2 blue
3 orange
4 black
5 grey