我有以下代码:
dict1={'1':'Ajay','1201':'Badol','102':'Cynthia','2':'Ravi','201':'John'}
for key,val in sorted(dict1.items()):
print (key,val)
我得到的输出:
('1', 'Ajay')
('102', 'Cynthia')
('1201', 'Badol')
('2', 'Ravi')
('201', 'John')
我期望:
('1', 'Ajay')
('2', 'Ravi')
('102', 'Cynthia')
('201', 'John')
('1201', 'Badol')
如何实现?
答案 0 :(得分:2)
它按字符串排序,一个字符一个字符。您需要将其转换为整数才能按数字排序。
for key,val in sorted(dict1.items(), key=lambda x: int(x[0])):
print (key,val)
答案 1 :(得分:1)
我会做的,将密钥转换为int:
dict(sorted({int(k):v for k,v in dict1.items()}.items()))
{1: 'Ajay', 2: 'Ravi', 102: 'Cynthia', 201: 'John', 1201: 'Badol'}
说明:
1。{int(k):v for k,v in dict1.items()}
:将每个键转换为整数
2. sorted({int(k):v for k,v in dict1.items()}.items())
:根据字典的键调用字典上的排序函数。
3. dict
:上面的排序函数返回一个元组列表,因此我们需要再次对其进行口述。
答案 2 :(得分:1)
由于您的密钥是字符串,因此您会获得“字符串”顺序。 您可以提供自己的密钥,如下所示:
>>> for key in sorted(dict1.items(), key=lambda item: int(item[0])):
... print(key, val)
...
('1', 'Ajay') John
('2', 'Ravi') John
('102', 'Cynthia') John
('201', 'John') John
('1201', 'Badol') John
这将小节视为数字,给出我想得到的。