当键是字符串(名称)时按字母顺序对字典进行排序

问题描述 投票:0回答:8

首先,我知道有很多关于字典排序的帖子,但我找不到完全适合我的情况的帖子 - 而且我只是不理解排序(...lambda)的东西 - 所以这里是。

使用 Python 3.x 我有一个像这样的字典:

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

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

[John]="29, 121 bla, [email protected]"
[Jack]="32, 122 ble, [email protected]"
[Rudy]="42, 123 blj, [email protected]"

现在为了打印,我执行以下操作(其中响应是字典):

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

当用户要求打印用户数据库时,我希望它根据用作 KEY 的“名称”按字母顺序打印。

我让一切正常工作 - 但它没有排序 - 在开始手动排序之前,我想也许有一种内置的方法可以做到这一点......

谢谢,

python sorting dictionary
8个回答
39
投票

我会这样做:

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)

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

4
投票
dict1={"d":1,"a":3,"z":0}

x=sorted(dict1.items())

print(x)

输出

[('a', 3), ('d', 1), ('z', 0)]

2
投票

只是在一个单独的答案中重申@hughdbrown 的评论,因为我一开始错过了它并相信它是这个问题的真正答案:

您有一本想要按字母顺序排序的字典,请说

dictio
:

dictio = {'Beta': 2, 'alpha': 1}

sorted() 将按字母顺序将键排序到列表中,假设您将所有键转换为小写(否则将首先对大写条目进行排序,然后全部小写):

sortedkeys = sorted(dictio, key=str.lower)

通过使用该排序键列表再次调用原始字典,您可以按字母顺序输出它:

for i in sortedkeys:
    print dictio[i]

2
投票

您可以将

OrderedDict
sorted
一起使用:

from collections import OrderedDict

test_dict = {}

ordered_dict = OrderedDict(sorted(test_dict.items(), key=lambda t: t[0]))

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}

0
投票

排序字典1 问题 意见书 排行榜 讨论 显示键和值,按键按字母顺序排序。 显示键和值,按值升序排列 编写一个名为 process_scores 的 Python 函数,该函数以字典 Scores_dict 作为输入并实现上述任务。提供示例测试用例以及约束。

输入格式

输入是单个参数scores_dict,它是一个字典,其中包含学生姓名作为键,其相应的分数作为值。

限制

字典的键将是代表学生姓名的唯一字符串。 字典的值将是表示分数的整数。 字典不会是空的。 字典的最大长度为 10^5。 输出格式应严格遵循提供的格式,键和值用双引号 (") 括起来并用冒号 (:) 分隔,每个字典在大括号 {} 内打印在单行上。 输出格式

该函数应打印上面指定的每个任务的结果。每个任务的输出应在大括号 {} 内打印,并格式化为“键”:值对,键和值之间用冒号分隔。整本词典应打印在一行上。不需要显式返回值。

样本输入0

{“鲍勃”:92,“爱丽丝”:85,“查理”:78,“大卫”:90} 样本输出 0

{“爱丽丝”:85,“鲍勃”:92,“查理”:78,“大卫”:90} {“查理”:78,“爱丽丝”:85,“大卫”:90,“鲍勃”:92}

© www.soinside.com 2019 - 2024. All rights reserved.