尝试按帐户值对下面的字典进行排序,但缩写不正确
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'})])
答案 0 :(得分:3)
尝试使用key=lambda i: int(i[1]['accounts'])
。您的帐户“数字”是按字母顺序排序的字符串。如果希望它们按数字排序,则必须在键函数中将它们转换为数字。