Python:按键对字典排序

Python:按键对字典排序,python,Python,我正试着按键把字典分类 如果我执行以下操作,那么字典的排序如下 1, 20 10, 5 11, 3 2, 30 20, 2 相反,我想按如下方式对其进行排序: 1, 20 2, 30 10, 5 11, 3 20, 2 我现有的代码 writer = csv.writer(open('something.csv', 'wb')) keylist = count.keys() keylist.sort() for key in keylist: writer.writerow([ke

我正试着按键把字典分类

如果我执行以下操作,那么字典的排序如下

1, 20
10, 5
11, 3
2, 30
20, 2
相反,我想按如下方式对其进行排序:

1, 20
2, 30
10, 5
11, 3
20, 2
我现有的代码

writer = csv.writer(open('something.csv', 'wb'))

keylist = count.keys()
keylist.sort()
for key in keylist:
    writer.writerow([key, count[key]])

您的字典键是字符串,因此它们按字母顺序排序。首先需要将键转换为整数:

keylist = [int(k) for k in count.keys()]
keylist.sort()

for key in keylist:
     writer.writerow([key, count[str(key)]])

看起来你的键是字符串,而不是数字——这是字典排序。不管怎样,我认为stackoverflow上已经有了这样的问题。你可以简单地
keylist.sort(key=int)
,你也可以将排序后的键传递给writerows
writer.writerows(sorted(count.items(),key=lambda x:int(x[0])
count.keys(key=int)
可以工作,因为OP不需要INT,您也不需要再次强制转换,您也可以在dict上迭代。