【问题标题】:Trying to map through return list of dictionary with python尝试使用python通过字典的返回列表进行映射
【发布时间】:2021-06-26 22:49:06
【问题描述】:

我想做一些非常简单的事情,但我不知道为什么它不起作用

N = int(input())
numbers = list(input())
print(numbers)
def switch(x):
    return {
      '1': 2,
      '2': 5,
      '3': 5,
      '4': 4,
      '5': 5,
      '6': 6,
      '7': 3,
      '8': 7,
      '9': 6,
    }[x]

print(list(map(switch, numbers)))

我有上面的代码,我想要的是基于一个数字,从一个名为 switch 的函数中对每个数字的所有结果求和

【问题讨论】:

  • numbers = list(input()) 这将始终是一个列表,我猜您想输入多个数字,例如 1 2 3 6 5 如果是这样,那么您需要拆分字符串,例如 numbers = list(input("num: ").split())
  • 不@ChrisDoyle,数字是115380,例如我想得到[1,1,5,3,8,0]
  • "我不知道为什么它不工作" 如果您解释它,我们只能帮助诊断问题。当你尝试代码时发生了什么?这与你想要发生的有什么不同?
  • 当数字为'0' 时,switch 的结果应该是什么?看起来你只是有一个疏忽,然后 实际问题 是“我如何在 python 中对数字列表求和?”你通过把那个确切的东西into a search engine来回答。
  • 不管怎样,这个问题应该被关闭 - 作为一个错字,或者作为Sum a list of numbers in python的副本。

标签: python-3.x list dictionary return


【解决方案1】:

您想对所有数字求和吗? 在这种情况下,您可以使用sum 函数:

...
print(sum(map(switch, numbers)))

您不需要将map 结果转换为list,因为sum 接受迭代。

【讨论】:

  • 你好,Hook,我只是在这行代码中尝试从字典函数中获取列表时遇到问题
  • 为什么?它对我有用(我已经测试过了)。你能复制你的回溯吗?另外,请确保您不需要“0”,因为您是从“1”开始的。
  • 也适合我。但是,由于 sum 需要一个迭代器,所以不需要 list 调用,对吧?
  • @Malcolm 正确。
  • 我收到此错误:回溯(最近一次调用最后一次):文件“main.py”,第 18 行,在 print(sum(map(switch, numbers))) 文件“ main.py",第 5 行,在 switch return { KeyError: '0' 
猜你喜欢
  • 2020-03-15
  • 2021-11-15
  • 2020-08-05
  • 2021-02-09
  • 2021-01-26
  • 2019-07-10
  • 1970-01-01
  • 2019-07-15
  • 2022-06-11
相关资源
最近更新 更多