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

2024-09-30 20:27:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个代码:

myDict = {}
myDict['Hello'] = 's'
myDict['Hallo'] = 'a'
myDict['Test'] = 'b'
myDict['Buy'] = 'hoo'
myDict['Hehe'] = 'kkk'

print(list(myDict.keys()))

它随机返回,比如:

^{pr2}$

我想要的是:

['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)

Tags: csvcsvfile代码testhellobuykeysmydict
3条回答

使用OrderedDict。 提醒一下,因为python3.6dict是按插入顺序排列的。你用什么版本?在

# 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)])

我运行你的代码:

myDict = {}
myDict['Hello'] = 's'
myDict['Hallo'] = 'a'
myDict['Test'] = 'b'
myDict['Buy'] = 'hoo'
myDict['Hehe'] = 'kkk'

print(list(myDict.keys()))

它的打印信息是:

^{pr2}$

你的代码工作正常。在

这是一个duplicated问题:

Python3.7+
在python3.7.0中,dict对象的插入顺序保留特性已被声明为Python语言规范的一个官方部分,因此,您可以依赖它。在

Python 3.6(CPython)
对于python3.6,对于Python的CPython实现,默认情况下字典维护插入顺序。不过,这被认为是一个实现细节;您仍然应该使用集合.OrderedDict如果您希望在Python的其他实现中保证插入顺序。在

Python<;3.6
使用集合.OrderedDict当需要记住插入项顺序的dict时初始化。在

相关问题 更多 >