如何在字典中将列表乘以整数?

How to multiply list by integer within dictionary?

example = {'good':[1,2],'bad':[5,10],'great':[9,4]}

example2 = {'good':2,'bad':3}

我想将列表值乘以匹配键的整数并创建一个新字典,所以我应该得到:

example3 = {'good':[2,4],'bad':[15,30]}

我该怎么做?我试过:

示例 3 = {k:example.get(k) * example2.get(k) for k in set(example) & set(example2)}

但输出是:{'bad': [5, 10, 5, 10, 5, 10], 'good': [1, 2, 1, 2]}

我遇到的问题是如何将列表值乘以整数。

您的代码将 example1 中的每个对应列表(值)复制的次数与 example2 中的值一样多。

您的代码类似于:

>>>>two_items = ["A","B"]
>>>>number = [3]
>>>>result = two_items*number[0]

['A', 'B', 'A', 'B', 'A', 'B']

为了清楚起见,它的工作方式类似于字符串乘法:

>>>>my_string="Hello "
>>>>print(my_string * number[0])
Hello Hello Hello 

您需要做的是遍历列表中的每个项目并将其乘以给定的数字,如下所示:

>>>>two_numbers=[1,2]
>>>>number=[3]
>>>>result=[]
>>>>for num in two_numbers:
>>>>    x =num * number[0]
>>>>    result.append(x)
[3, 6]

鉴于上述情况,您的代码应如下所示:

example3 = {}
for key in example2.keys():
    temp =[]
    for item in example[key]:   
        temp.append(item*example2[key])
    example3[key]=temp