将列表项替换为相应的字典值

时间:2016-09-04 05:35:42

标签: python

我的字典是

{'apple': '2', 'banana': '3', 'pear': '1', 'peach': '1'}

我的清单是

['banana', 'apple', 'pear', 'apple banana']

如何使用字典值替换列表值的新列表? 这就是新列表应该是什么。

['3', '2', '1', '5']

我如何添加所有值以获得一个新列表,其中添加了数字,如此

['11'] 

我试过了:

result = map(dictionary.get, l)
print(list(result))

但这给出了错误的答案:['3', '2', '1', None]

1 个答案:

答案 0 :(得分:0)

让我们定义你的变量:

>>> d = {'apple': '2', 'banana': '3', 'pear': '1', 'peach': '1'}
>>> x = ['banana', 'apple', 'pear', 'apple banana']

现在,让我们计算结果:

>>> [sum(int(d[k]) for k in y.split()) for y in x]
[3, 2, 1, 5]
>>> sum(sum(int(d[k]) for k in y.split()) for y in x)
11

或者,如果上面的第一个列表确实需要为其元素添加字符串,并且上面的总和也需要是字符串并在列表中:

>>> [str(sum(int(d[k]) for k in y.split())) for y in x]
['3', '2', '1', '5']
>>> [str(sum(sum(int(d[k]) for k in y.split()) for y in x))]
['11']