【问题标题】:python nested dictionary comprehension bug?python嵌套字典理解错误?
【发布时间】:2017-10-10 10:59:54
【问题描述】:

以下嵌套/双字典理解似乎给出了错误的结果:

>>> { k:v for k in range(2) for v in 'abc' }
{0: 'c', 1: 'c'}

用于比较的元组:

>>> [ (k,v) for k in range(2) for v in 'abc' ]
[(0, 'a'), (0, 'b'), (0, 'c'), (1, 'a'), (1, 'b'), (1, 'c')]

dict() 的行为相同:

>>> dict( (k,v) for k in range(2) for v in 'abc' )
{0: 'c', 1: 'c'}

或者我在这里犯了一个概念错误?

【问题讨论】:

  • 您期望的是什么?同一个键不能有多个值,每个新值只是替换旧值。
  • 这是因为,dict 不能有相同的key 名称
  • 也许你想要{k : list('abc') for k in range(2)}?但是没有预期的输出,这只是一个猜测。
  • 你犯了一个概念上的错误。字典不能有重复的键,元组没有键
  • 哦,这很有道理!傻我!

标签: python dictionary-comprehension


【解决方案1】:

也许我打算这样做:

>>> { k1: { k2 : (k1,k2) for k2 in range(2) } for k1 in range(3) }
...
{0: {0: (0, 0), 1: (0, 1)},
 1: {0: (1, 0), 1: (1, 1)},
 2: {0: (2, 0), 1: (2, 1)}}

【讨论】:

    猜你喜欢
    • 2013-07-28
    • 2011-06-06
    • 1970-01-01
    • 2013-11-30
    • 2021-07-24
    • 2018-08-01
    • 2017-11-27
    • 2016-11-25
    相关资源
    最近更新 更多