【问题标题】:Dictionary Generator in PythonPython中的字典生成器
【发布时间】:2020-05-24 13:39:37
【问题描述】:

这是我的代码,它应该生成一个字典,其中键是 1 到 20 之间的数字(都包括在内),值是键的平方。该函数应该只打印值。

d={}

d.update(dict(map(lambda i:({i:i**2}),[i for i in range(0,21)])))

print(d.values())

它给了我以下错误:

 File "D:\python\py\new\dict_1_to_20_sqr.py", line 16, in <module>
    d.update(dict(map(lambda i:({i:i**2}),[i for i in range(0,21)])))

ValueError: dictionary update sequence element #0 has length 1; 2 is required

请指出我的错误。

谢谢。

【问题讨论】:

  • {i: i**2 for i in range(0,21)},就这么简单。
  • 正如@Sushanth 指出的那样,您创建简单字典的方法过于复杂。如果你想知道你的方法失败的原因,看看list(map(lambda i:({i:i**2}),[i for i in range(0,21)]))的输出,你就会明白了。
  • @TimPietzcker 谢谢,我不敢相信我错过了!
  • 谢谢@Sushanth,答案很完美。
  • @TimPietzcker,感谢您指出错误。

标签: python dictionary generator


【解决方案1】:

列表可能更适合此应用程序。试试这个:

d = [ x**2 for x in range(21) ]

使用此列表,您可以使用d[6] 访问列表中的第七项,而不必使用字典。但是,如果您仍想使用字典,可以通过以下方式进行:

d = { i: i**2 for i in range(21) }

【讨论】:

    猜你喜欢
    • 2011-10-06
    • 2020-01-18
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 2018-09-30
    • 2014-10-04
    • 2022-01-17
    • 2023-03-24
    相关资源
    最近更新 更多