使用列表从字典中提取值

时间:2016-11-20 00:32:48

标签: python list dictionary

给出一个值列表,例如

list1=[19, 25, 100]

和索引:

i = {'a': {10: 1}, 'b': {100: 3}, 'c': {19: 3, 25: 2, 26: 1, 28: 1, 30: 1}, 'd': {46:4, 100: 1}, 'e': {10: 1, 25: 1, 100: 1}, 'f': {4: 1, 19: 1}

什么是最便宜的方法(处理更大的比例),我可以在dict的第一个值中查找列表值,将属于它出现的键的值对的所有第二个值相加乘以第二个值本身?我想要在这样的结构中整理这些值。

{{19: [24, 2], 25: [16, 3], 100: [3, 3, 5]}} 

其中24 =(3 *(3 + 2 + 1 + 1 + 1))例如

谢谢。

1 个答案:

答案 0 :(得分:1)

这是一个双循环解决方案,循环遍历键和字典,并在旅途中构建字典:

result = {}
for k in list1:
    result[k] = []
    for v in i.values():
        if k in v:
            result[k].append(v[k] * sum(v.values()))

result
# {19: [24, 2], 25: [16, 3], 100: [9, 3, 5]}