按字母顺序排序字典的字符串键(名称)

30 投票
7 回答
120251 浏览
提问于 2025-04-18 13:11

首先,我知道关于字典排序的帖子很多,但我找不到一个完全适合我情况的帖子,而且我对sorted(...lambda)这些东西也不太理解,所以我来问问。

我在使用Python 3.x,有一个字典,长这样:

dictUsers[Name] = namedTuple(age, address, email, etc...)

举个例子,我的字典看起来是这样的:

[John]="29, 121 bla, some@la.com"
[Jack]="32, 122 ble, some@la.com"
[Rudy]="42, 123 blj, some@la.com"

现在为了打印这个字典,我这样做(其中response是一个字典):

for keys, values in response.items():
    print("Name= " + keys)
    print ("   Age= " + values.age)
    print ("   Address= " + values.address)
    print ("   Phone Number= " + values.phone)

当用户要求打印用户数据库时,我希望它能根据“name”这个键按字母顺序打印出来。

我把所有东西都弄好了,但它没有排序。在我开始手动排序之前,我想也许有内置的方法可以做到这一点……

谢谢,

7 个回答

2

你可以使用 OrderedDictsorted 一起使用:

from collections import OrderedDict

test_dict = {}

ordered_dict = OrderedDict(sorted(test_dict.items(), key=lambda t: t[0]))
4
dict1={"d":1,"a":3,"z":0}

x=sorted(dict1.items())

print(x)

输出

[('a', 3), ('d', 1), ('z', 0)]
13
dictio = { 'Epsilon':5, 'alpha':1, 'Gamma':3, 'beta':2, 'delta':4 }

sortedDict = dict( sorted(dictio.items(), key=lambda x: x[0].lower()) )

for k,v in sortedDict.items():
    print('{}:{}'.format(k,v))

输出

 alpha:1
 beta:2
 delta:4
 Epsilon:5
 Gamma:3
38

我会这样做:

sorted_dict = {key: value for key, value in sorted(unsorted_dict.items())}
25

这是一个简单的算法,用来按字母顺序排序字典的键。首先,使用 sorted 来对键进行排序。

sortednames=sorted(dictUsers.keys(), key=lambda x:x.lower())

然后,对于每个键名,从字典中获取对应的值。

for i in sortednames:
   values=dictUsers[i]
   print("Name= " + i)
   print ("   Age= " + values.age)
   print ("   Address= " + values.address)
   print ("   Phone Number= " + values.phone)

撰写回答