Python 字典中键的顺序

Python 字典中键的顺序,python,dictionary,Python,Dictionary,代码: 这将打印['a','c','b']。我不确定方法keys()如何确定l中关键字的顺序。但是,我希望能够以“适当”的顺序检索关键字。当然,正确的顺序将创建列表['a','b','c']只要在需要时对列表进行排序即可 d = {'a': 0, 'b': 1, 'c': 2} l = d.keys() print l 发件人: dictionary对象的keys()方法以任意顺序返回字典中使用的所有键的列表(如果要对其排序,只需对其应用sorted()函数) 使用,对传入的iterable

代码:


这将打印
['a','c','b']
。我不确定方法
keys()
如何确定l中关键字的顺序。但是,我希望能够以“适当”的顺序检索关键字。当然,正确的顺序将创建列表
['a','b','c']

只要在需要时对列表进行排序即可

d = {'a': 0, 'b': 1, 'c': 2}
l = d.keys()

print l
发件人:

dictionary对象的keys()方法以任意顺序返回字典中使用的所有键的列表(如果要对其排序,只需对其应用sorted()函数)

使用,对传入的iterable进行排序

.keys()
方法以任意顺序返回键。

您可以使用(需要Python 2.7)或更高版本

另外,请注意,
OrderedDict({'a':1,'b':2,'c':3})
将不起作用,因为您使用
{…}
创建的
dict已经忘记了元素的顺序。相反,您希望使用
OrderedDict([('a',1),('b',2),('c',3)])

正如文档中提到的,对于低于Python 2.7的版本,可以使用recipe。

Python 3.7+ 在Python中,对象的插入顺序保留性质是Python语言规范的正式部分。因此,您可以依赖它

Python 3.6(CPython) 从Python 3.6开始,对于Python的CPython实现,默认情况下使用字典。这被认为是一个实现细节;如果希望插入顺序在其他Python实现中得到保证,那么仍然应该使用


Python>=2.7和,尽管顺序并不重要,因为字典是hashmap。这取决于推送的顺序:

s='abbc'
a='cbab'
def加载指令:
dict_tmp={}
对于ch in s:
如果输入命令tmp.keys():
dict_tmp[ch]+=1
其他:
dict_tmp[ch]=1
返回指令tmp
dict_a=加载dict(a)
dict\u s=加载dict(s)
print('对于字符串%s,键是%s'(s,dict\u.keys()))
print('对于字符串%s,键是%s'(a,dict_a.keys()))
输出:
对于字符串abbc,键是dict_键(['a','b','c'])

对于字符串cbab,键是dict_键(['c','b','a'])

如果Python字典与大多数字典类似,那么它们实际上是哈希表。除此之外,这意味着密钥的顺序没有得到保证,甚至没有指定。特别是,它不会记住键的添加顺序。@cHao:这本质上意味着,如果你在字典中循环元素,你的程序将是不确定的?@hellogoodbay:我不会走那么远;那里仍然有非常可预测的行为。每个完整的迭代只看到每个键/值对中的一个。在大多数语言中,你甚至每次都会看到它们以相同的顺序排列。但是,除非文档保证某个特定的订单,否则您不应该指望它是您想要的订单。(一些语言(比如Perl)实际上会将顺序随机化一点——据称是出于安全原因,但我认为这真的只是为了让你摆脱依赖未指定行为的习惯。:)我不认为Python有那么邪恶,但呃……)如果没有修改dict,顺序将是一样的。从手册中可以看出:“如果调用items()、keys()、values()、iteritems()、iterkeys()和itervalues(),而不对字典进行任何修改,则列表将直接对应。这允许使用zip()创建(值、键)对:pairs=zip(d.values()、d.keys())。”@sfranky我认为Steveayer的意思是,使用上述不同方法获得的结果之间的顺序是相同的,而不是与写入元素的顺序相同;如果你用这种方式插入钥匙,钥匙只会按字母顺序显示出来;这可能与他实际计划如何使用它有关系,也可能没有关系。我以前遇到过一些人,他们希望OrderedDict按排序顺序返回任意插入,因此我觉得我应该指出这一点。我不相信作者正在寻找保留插入顺序的词典。密钥顺序通常更为重要,可以通过自平衡二叉搜索树来实现。在C++中,我们有STD::在python中,显然没有这样的东西(内置)。如果您想要原始顺序,并且没有排序,则这不起作用。python中的字典仅从版本3.6+开始按插入顺序排序,这应该是可以接受的答案。
l = sorted(d.keys())
>>> print sorted(d.keys())
['a', 'b', 'c']