繁体   English   中英

如何在 Python 中对字典键进行排序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM