我有如下定义的字典键:
d['abc']=[1,2,3]
d['def']=[2,4,6]
zipped_list_1=zip()
zipped_list_1.append(d['abc'])
zipped_list_1.append(d['def'])
print zipped_list_1
[[1, 2, 3], [2, 4, 6]]<----I want to get [d['abc'],d['abc']] instead
print [sum(item) for item in zipped_list_1]
[6,12]<------------I want [(3),(6),(9)] instead
这是一个例子:Python: Sum of element for n-lists但它没有谈论dicts。
答案 0 :(得分:1)
您构建zipped_list_1
的方式不会产生您期望的结果。如果您确定作为词典元素的列表长度相等,则需要以下内容:
zipped_list_1 = zip(*d.values())
print [sum(item) for item in zipped_list_1]
d.values()
返回dict元素的列表 - 在本例中为子列表,因此它的计算结果为[[1,2,3], [2,4,6]]
。然后*
运算符将其值作为位置参数分配给zip
- 对于您列出的输入,它等同于调用zipped_list_1 = zip([1, 2, 3], [2, 4, 6])
。这会在[[1, 2], [2, 4], [3, 6]]
中为您zipped_list_1
提供,因此sum
列表理解将按预期运行。
答案 1 :(得分:0)
你可能想要这样的东西:
d = {}
d['a']=[1,2,3]
d['b']=[2,4,6]
zipped_list = zip(d['a'],d['b'])
print map(lambda x: sum(x), zipped_list)