【问题标题】:Is a dict literal containing repeated keys well-defined?包含重复键的 dict 文字是否定义明确?
【发布时间】:2015-12-31 01:23:29
【问题描述】:

如果我写d = {0: 1, 0: 2},Python 是保证d[0] 的值,还是“未定义的行为”?

(当然,这不是你在编程时曾经写的东西,但这个问题主要是出于好奇。在本地,它似乎总是保存与键的最后一个关联的值发生,即2 这里。也许它对于一些奇怪的代码生成情况很有用。)

【问题讨论】:

  • @TigerhawkT3:我在your duplicate 中没有看到关于literals 以及它们是否“定义明确” 的问题。
  • 该问题的标题中没有“literal”一词,但正文几乎相同,只是变量名称不同。
  • 我不是在问 是否 键覆盖。我在问它是否定义如何发生。这不是重复的。
  • 回复。你的最后一句话,当我想要所有键和每个键的任意值时,我发现这个结构很有用,尽管它是一种理解而不是文字。

标签: python dictionary syntax


【解决方案1】:

是的,它是明确定义的——最后一个值获胜。 {0: 1, 0: 2}dictionary display

如果给出了一个逗号分隔的键/数据对序列,它们是 从左到右评估以定义字典的条目: 每个键对象都用作字典中的键来存储 对应的基准。这意味着您可以指定相同的键 在键/数据列表中多次,最终字典的值 因为那个键将是最后一个给定的重点是我的

【讨论】:

  • @TigerhawkT3:我不认为它是重复的。
  • @TigerhawkT3:圣战开始的成本更低(字面意义上的圣战,例如two fingers vs. three)。这与单词的接近程度无关(问题可能是重复的,即使它们的表述方式完全不同)。这是关于意图。如果字典是动态创建的(据我了解),另一个问题不会改变。
  • 感谢您的参考!
【解决方案2】:
a = {0: 1, 0: 2}
a[0]
2

它将在相同或重复键的值中给出最高索引的值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 2021-09-27
    • 2021-02-13
    • 2011-11-24
    • 2011-03-09
    • 1970-01-01
    相关资源
    最近更新 更多