首页 > 解决方案 > 如何在python中按值对字典进行排序

问题描述

尝试按帐户值对以下字典进行排序,但未正确短路

{'Ith': {'users': '490', 'accounts': '1022'}, 'Al': {'users': '85', 'accounts': '145'}, 'Credit': {'users': '0', 'accounts': '0'}, 'Ahli': {'users': '68', 'accounts': '88'}, 'Standard': {'users': '76', 'accounts': '191'}, 'State': {'users': '1', 'accounts': '1'}, 'Bah': {'users': '58', 'accounts': '94'}, 'Kuw': {'users': '3', 'accounts': '7'}, 'Khal': {'users': '32', 'accounts': '54'}, 'National': {'users': '71', 'accounts': '90'}, 'Ban': {'users': '418', 'accounts': '817'}}

OrderedDict(sorted(a.items(), key=lambda i: i[1]['accounts'], reverse=True))

我得到的结果是

OrderedDict([('Bah', {'users': '58', 'accounts': '94'}), ('National', {'users': '71', 'accounts': '90'}), ('Ahli', {'users': '68', 'accounts': '88'}), ('Ban', {'users': '418', 'accounts': '817'}), ('Kuwe', {'users': '3', 'accounts': '7'}), ('Khal', {'users': '32', 'accounts': '54'}), ('Standard', {'users': '76', 'accounts': '191'}), ('Al', {'users': '85', 'accounts': '145'}), ('Ith', {'users': '490', 'accounts': '1022'}), ('State', {'users': '1', 'accounts': '1'}), ('Credit', {'users': '0', 'accounts': '0'})])

我需要结果应该是

{'Ith': {'users': '490', 'accounts': '1022'}, 'Ban': {'users': '418', 'accounts': '817'}, 'Standard': {'users': '76', 'accounts': '191'}, 'Al': {'users': '85', 'accounts': '145'}, 'Bah': {'users': '58', 'accounts': '94'}, 'National': {'users': '71', 'accounts': '90'}, 'Ahli': {'users': '68', 'accounts': '88'}, 'Khal': {'users': '32', 'accounts': '54'}, 'Kuw': {'users': '3', 'accounts': '7'}, 'State': {'users': '1', 'accounts': '1'}, 'Credit': {'users': '0', 'accounts': '0'}}

标签: pythonsortingdictionary

解决方案


尝试使用key=lambda i: int(i[1]['accounts']). 您的帐户“数字”是您按字典顺序排序的字符串。如果你想让它们按数字排序,你必须在你的键函数中将它们转换为数字。


推荐阅读