如何在python中按值对字典排序

时间:2020-06-21 06:22:29

标签: python sorting dictionary

尝试按帐户值对下面的字典进行排序,但缩写不正确

alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
        dialog.dismiss();
        // Close the activity
        finish();
    }
});

我得到的结果是

{'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'})])

1 个答案:

答案 0 :(得分:3)

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