【问题标题】:Python Add element with key equal to 8Python添加键等于8的元素
【发布时间】:2016-08-09 23:45:15
【问题描述】:

我有这段代码可以在 Python 中运行:

squares = {1:1,2:3,3:"error",4:16,}
squares[3]=9
squares[8] =64
print(squares)

我得到的结果是:

{8: 64, 1: 1, 2: 3, 3: 9, 4: 16}

当我尝试将8 替换为例如5 时,如下代码所示:

squares = {1:1,2:3,3:"error",4:16,}
squares[3]=9
squares[5] =64
print(squares)

我得到以下结果:

{1: 1, 2: 3, 3: 9, 4: 16, 5: 64}

有人能解释一下为什么在第一段代码中元素是在开头添加的,而在最后一段代码中它是在字典末尾添加的吗?

【问题讨论】:

  • 字典未排序!

标签: python sorting python-3.x dictionary key


【解决方案1】:

字典没有排序。元素的顺序无关紧要。

【讨论】:

    【解决方案2】:

    首先阅读docs很重要:

    最好将字典视为一组无序 键:值对,并要求键是唯一的(在一个字典中)。

    所以区分开始结束是没有意义的。

    【讨论】:

      【解决方案3】:

      正如之前的答案所指出的,字典的项目是无序的。如果你想用有序的键打印你的“方形”字典的内容,你可以这样做:

      print(sorted(squares))
      

      这会将字典的内容打印为(键,值)对,按键排序:

      [(1, 1), (2, 4), (3, 9), (4, 16), (5, 25), (8, 64)]
      

      【讨论】:

        【解决方案4】:

        字典的元素以确定的顺序显示。然而,与人们预期的相反,它们并没有按字典顺序排列。

        您可以使用方法dict.items() 和内置函数sorted() 来显示字典的内容,其中键或值按字典顺​​序排列:

        >>> somedict = {7:'a', 6:'c', 8:'b'}
        >>> print(somedict)
        {8: 'b', 6: 'c', 7: 'a'}
        >>> print(sorted(somedict.items()))
        [(6, 'a'), (7, 'c'), (8, 'b')]
        >>> print(sorted(somedict.items(), key=lambda x: x[1]))
        [(7, 'a'), (8, 'b'), (6, 'c')]
        

        【讨论】:

          【解决方案5】:

          作为初学者,这曾经也让我绊倒。与列表不同,字典没有排序。换句话说,当您打印字典的内容时,您不能依赖键/值对出现的顺序。如果您确实需要订购,可以使用collections.OrderedDict

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-03-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多