[英]How to sort Dictionary Keys in Python
我有这个代码:
myDict = {}
myDict['Hello'] = 's'
myDict['Hallo'] = 'a'
myDict['Test'] = 'b'
myDict['Buy'] = 'hoo'
myDict['Hehe'] = 'kkk'
print(list(myDict.keys()))
它随机返回,例如:
['Hallo','Buy','Hehe','Test,'Hello']
我想要的是:
['Hello','Hallo','Test','Buy','Hehe']
“你好”是第一,“你好”是第二,“测试”是第三,“购买”是第四,“嘿嘿”是第五
这很重要,因为我想制作 csv 文件:
with open('names.csv', 'w', newline='') as csvfile:
fieldnames = list(myDict.keys())
writer = csv.DictWriter(csvfile, fieldnames=fieldnames, delimiter = ";")
writer.writeheader()
writer.writerow(myDict)
这是一个重复的问题:
蟒蛇 3.7+
在 Python 3.7.0 中,dict 对象的插入顺序保留特性已被声明为 Python 语言规范的正式部分。 因此,您可以依赖它。
Python 3.6 (CPython)
从 Python 3.6 开始,对于 Python 的 CPython 实现,字典默认维护插入顺序。 不过,这被认为是一个实现细节; 如果您希望在其他 Python 实现中保证插入顺序,您仍然应该使用 collections.OrderedDict。
蟒蛇 <3.6
当您需要记住插入项目顺序的字典时,请使用 collections.OrderedDict 类。
使用OrderedDict 。 只是提醒您,因为python 3.6 dict 是插入顺序的。 你用什么版本?
# regular unsorted dictionary
d = {'banana': 3, 'apple': 4, 'pear': 1, 'orange': 2}
# dictionary sorted by key
OrderedDict(sorted(d.items(), key=lambda t: t[0]))
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2),
('pear', 1)])
# dictionary sorted by value
OrderedDict(sorted(d.items(), key=lambda t: t[1]))
OrderedDict([('pear', 1), ('orange', 2), ('banana', 3),
('apple', 4)])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.