例如,如果我有两个列表:
listA = [1, 2, 3, 4, 5]
listB = [red, blue, orange, black, grey]
我正在试图弄清楚如何在两列中显示两个参数列表中的元素,
分配1: red, 2: blue...
等等。
必须在不使用内置zip
函数的情况下完成此操作。
答案 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