【问题标题】:Replace list item with corresponding dictionary value [closed]用相应的字典值替换列表项[关闭]
【发布时间】:2017-01-11 20:02:36
【问题描述】:

我的字典是

{'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]

【问题讨论】:

  • 您循环遍历列表中的每个值,然后在字典中查找该值以获取其新值...
  • 你能粘贴一个代码吗?我问怎么做是有原因的……那个原因是我不知道怎么做
  • 您自己尝试过吗?
  • 是的......我似乎无法让它工作。这是我现在正在处理的另一个代码的一部分
  • @WillW 大概您之前使用过for 循环,并且已经了解了如何在字典中查找值?您将这两者放在一起是您的第一步……如果您向我们展示不起作用的代码,我们可能会为您提供帮助。

标签: python


【解决方案1】:

让我们定义你的变量:

>>> 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']

【讨论】:

  • 这帮助很大。谢谢,我不知道为什么人们不赞成你
猜你喜欢
  • 1970-01-01
  • 2016-09-17
  • 1970-01-01
  • 2020-07-11
  • 2019-04-07
  • 1970-01-01
  • 2011-05-06
  • 1970-01-01
相关资源
最近更新 更多