【发布时间】:2019-01-10 01:19:45
【问题描述】:
上一个关于按键排序字典的堆栈溢出问题对python 3.6+提出了以下建议:
d={2:3,1:89,4:5,3:0}
b=dict(sorted(d.items()))
print(b)
正如预期的那样,输出如下:
{1: 89, 2: 3, 3: 0, 4: 5}
但是当我输入以下内容时
a={'1':1,'x':4,'z':-40023,'c':234}
c=dict(sorted(d.items()))
print(c)
这是产生的输出:
{'1': 1, 'c': 234, 'x': 4, 'z': -40023}
我的问题如下:
- 为什么这种方法适用于第一种情况而不适用于第二种情况。
- 为什么它只适用于 python3.6+ 而不是以前。他们是否改变了字典类的实现?
- 上面代码中的 b 是一个新的排序字典吗?如果是这样,我了解到哈希表从不排序,这怎么可能?
【问题讨论】:
-
dict 插入排序不是 Python 3.6+ 之前的东西 - 如果不能保证这一点,请不要在代码中依赖它。否则请参阅 OrderedDict,它存在于所有相关的 Python 版本中。
-
'1', 'c', 'x', 'z'是正确的顺序 -
3) 因为一些善意的谎言(忽略特定的实现细节/怪癖/功能,并且)更容易谈论通用 ADT,例如“地图”
标签: python sorting dictionary