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

时间:2014-07-14 02:52:30

标签: python sorting dictionary

首先,我知道有很多关于字典排序的帖子,但我找不到一个完全符合我的情况的帖子 - 我只是不理解排序的(... 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的“名称”按字母顺序打印。

我已经完成了所有工作 - 但它没有排序 - 在开始手动排序之前,我想也许有一种内置的方式来做...

谢谢,

7 个答案:

答案 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)]