我正在尝试将项目添加到字典中的列表中。 我有两个列表:x_list和y_list。 我试图使x_list成为键,y_list值。 我尝试过使用zip方法,但我确实需要逐个添加。现在我有:
dictionary = dict((x,0) for x in x_list)
但我希望有类似的东西:
dictionary = dict((x,y) for x in x_list, for y in y_list)
但显然这会产生语法错误。有没有办法做到这一点? 谢谢!
编辑:
我已经尝试了压缩并且它有效,谢谢,但我需要逐个将项添加到字典中(我正在尝试使用相同的键将条目添加到一起,例如apple:10和apple:5成为苹果:15)
例如:
x_list = (blue, orange, purple, green, yellow, green, blue)
y_list = (1, 2, 5, 2, 4, 3, 8)
我希望输出为
dictionary = {blue:9, orange:2, purple:5, green:5, yellow:4}
并且列表会不断添加到。
答案 0 :(得分:1)
我会在这里使用Counter
:
from collections import Counter
c = Counter()
for k, v in zip(x_list, y_list):
c[k] += v
答案 1 :(得分:0)
试试这个:
dct = {}
x_list = (blue, orange, purple, green, yellow, green, blue)
y_list = (1, 2, 5, 2, 4, 3, 8)
for i in range(len(x_list)):
if x_list[i] in dct.keys():
dct[x_list[i]] += y_list[i]
else:
dct[x_list[i]] = y_list[i]
print dct
答案 2 :(得分:0)
使用enumerate
函数的简短解决方案:
x_list = ['blue', 'orange', 'purple', 'green', 'yellow', 'green', 'blue']
y_list = [1, 2, 5, 2, 4, 3, 8]
result = {}
for i, v in enumerate(x_list):
result[v] = y_list[i] if not result.get(v) else result[v] + y_list[i]
print(result)
输出:
{'yellow': 4, 'orange': 2, 'blue': 9, 'green': 5, 'purple': 5}
答案 3 :(得分:0)
试试这段代码:
list_x =["apple", "mango", "orange", "apple","mango"]
list_y = [10,5,25,10,15]
total_dict = {}
for k, v in zip(list_x, list_y):
total_dict[k] = total_dict.get(k,0)+v
total_dict
的值最终为:
{'orange': 25, 'mango': 20, 'apple': 20}