首先,我知道有很多关于字典排序的帖子,但我找不到一个完全符合我的情况的帖子 - 我只是不理解排序的(... 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"
现在要进行打印,我会执行以下操作(响应是字典):
for keys, values in response.items():
print("Name= " + keys)
print (" Age= " + values.age)
print (" Address= " + values.address)
print (" Phone Number= " + values.phone)
当用户要求打印出用户数据库时,我希望它根据用作KEY的“名称”按字母顺序打印。
我已经完成了所有工作 - 但它没有排序 - 在开始手动排序之前,我想也许有一种内置的方式来做...
谢谢,
答案 0 :(得分:6)
按字母顺序对字典键进行排序的简单算法,首先使用sorted
sortednames=sorted(dictUsers.keys(), key=lambda x:x.lower())
为每个键名检索dict中的值
for i in sortednames:
values=dictUsers[i]
print("Name= " + i)
print (" Age= " + values.age)
print (" Address= " + values.address)
print (" Phone Number= " + values.phone)
答案 1 :(得分:1)
在一个单独的回答中重申@ hughdbrown的评论,因为我一开始就错过了它,并认为这是这个问题的真正答案:
您想要按字母顺序排序字典,例如dictio
:
dictio = {'Beta': 2, 'alpha': 1}
sorted()会按字母顺序将您的键排序到列表中(否则,大写条目将先排序,然后全部小写):
sortedkeys = sorted(dictio, key=str.lower)
通过使用该排序键列表再次调用原始字典,您可以按字母顺序输出:
for i in sortedkeys:
print dictio[i]
答案 2 :(得分:0)
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
答案 3 :(得分:0)
def sort_dict_by_key(unsorted_dict)
sorted_keys = sorted(unsorted_dict.keys(), key=lambda x:x.lower())
sorted_dict= {}
for key in sorted_keys:
sorted_dict.update({key: unsorted_dict[key]})
return sorted_dict
un_sorted_dict = {'Epsilon': 5, 'alpha': 1, 'Gamma': 3, 'beta': 2, 'delta': 4}
sorted_dict = sort_dict_by_key(un_sorted_dict)
print(sorted_dict) # {'alpha': 1, 'beta': 2, 'Epsilon': 5, 'Gamma': 3, 'delta': 4}
答案 4 :(得分:0)
我会这样做:
sorted_dict = {key: value for key, value in sorted(unsorted_dict.items())}
答案 5 :(得分:0)
您可以将 File pathToBinary = new File("/usr/bin/firefox");
与 OrderedDict
一起使用:
sorted
答案 6 :(得分:0)
dict1={"d":1,"a":3,"z":0}
x=sorted(dict1.items())
print(x)
输出
[('a', 3), ('d', 1), ('z', 0)]