代码:
d = {'a': 0, 'b': 1, 'c': 2}
l = d.keys()
print l
这将打印出
['a', 'c', 'b']
。我不确定方法keys()
如何确定l
中关键字的顺序。然而,我希望能够按照"正确"的顺序检索关键字。当然,"正确"的顺序将创建列表
['a', 'b', 'c']
。代码:
d = {'a': 0, 'b': 1, 'c': 2}
l = d.keys()
print l
['a', 'c', 'b']
。我不确定方法keys()
如何确定l
中关键字的顺序。然而,我希望能够按照"正确"的顺序检索关键字。['a', 'b', 'c']
。在Python 3.7.0 中,dict
对象保持插入顺序的特性已被宣布为 Python 语言规范的官方一部分。因此,您可以依赖它。
从Python 3.6开始,对于Python的CPython实现,默认情况下字典保持插入顺序。尽管如此,这被认为是一项实现细节;如果您想要跨其他Python实现保证插入顺序,则仍应使用{{link5:collections.OrderedDict
}}。
当您需要一个记住插入顺序的dict
时,请使用collections.OrderedDict
类。
您可以使用 OrderedDict (需要Python 2.7或更高版本)。
此外,请注意,OrderedDict({'a': 1, 'b':2, 'c':3})
不起作用,因为您使用 {...}
创建的字典已经忘记了元素的顺序。 相反,您应该使用 OrderedDict([('a', 1), ('b', 2), ('c', 3)])
。
如文档所述,在低于Python 2.7版本的情况下,您可以使用此配方。
来自http://docs.python.org/tutorial/datastructures.html:
“字典对象的keys()方法返回一个列表,其中包含字典中使用的所有键,顺序是任意的(如果您想要排序,只需将sorted()函数应用于它即可)。”
当你想要使用它时,只需要对列表进行排序。
l = sorted(d.keys())
s = 'abbc'
a = 'cbab'
def load_dict(s):
dict_tmp = {}
for ch in s:
if ch in dict_tmp.keys():
dict_tmp[ch]+=1
else:
dict_tmp[ch] = 1
return dict_tmp
dict_a = load_dict(a)
dict_s = load_dict(s)
print('for string %s, the keys are %s'%(s, dict_s.keys()))
print('for string %s, the keys are %s'%(a, dict_a.keys()))
输出:
对于字符串abbc,键为dict_keys(['a', 'b', 'c'])
对于字符串cbab,键为dict_keys(['c', 'b', 'a'])