Python 键为字符串(名称)时按字母顺序对字典排序

Python 键为字符串(名称)时按字母顺序对字典排序,python,sorting,dictionary,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

首先,我知道有很多关于字典排序的帖子,但我找不到一篇完全符合我的情况的帖子——我只是不理解排序(…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"
现在,为了打印,我做了以下工作(其中响应是一个字典):

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

我把所有的东西都准备好了——但它没有排序——在开始手动排序之前,我想可能有一种内置的方式来完成它


谢谢,

按字母顺序对听写键进行排序的简单算法,首先使用排序后的
对键进行排序

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)

我只是想在另一个回答中重申@hughdbrown的评论,因为一开始我没有注意到,我认为这是这个问题的真实答案:

您有一本要按字母顺序排序的词典,比如说
dictio

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

如果将所有键转换为小写,则将按字母顺序将键排序到列表中(否则,将首先对大写项排序,然后对所有小写项排序):

sortedkeys=sorted(发音,键=str.lower)

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

for i in sortedkeys:
    print dictio[i]
输出

 alpha:1
 beta:2
 delta:4
 Epsilon:5
 Gamma:3
我想这样做:

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

您可以将
OrderedDict
sorted
一起使用:

from collections import OrderedDict

test_dict = {}

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

你是从数据库中得到这个的吗?文本文件被用作数据库而不是文本文件,你可以使用sqlite?这样你就可以在数据库中使用文本文件来完成它。。。要求…奇怪。。。这是调试器为创建的“sortednames”变量显示的内容:list:['Ahmad','John','Katya','a']。显然,“a”应该是第一个而不是最后一个正确的…它不喜欢sortednames行中的工作“key”(在第57行第40列遇到“key”。我们期待其中一个…)。。。我添加了逗号-现在我得到了TypeError:“str”对象的描述符“lower”需要一个参数没有必要说
.keys()
。首选的方法是
key=string.lower
,我相信,不会用lambda生成一个新函数:
>a={'a':1,'B':2}>>打印排序(a)['B','a']>>导入字符串>>>打印排序(a,key=string.lower)['a',B']
使它更简单:
排序的dict=dict(排序的)(未排序的dict.items())
。我不确定您能否保证dict()以正确的顺序返回键。它可以洗牌
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}
sorted_dict = {key: value for key, value in sorted(unsorted_dict.items())}
from collections import OrderedDict

test_dict = {}

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