基于带字符串编号的dict键值列出排序

时间:2016-05-20 18:55:41

标签: python list sorting dictionary

根据list键的值,我想要一个简单的dict number0-99个对象。我可以在这里找到一个正常工作的解决方案,直到我有base_list = [{'number':"123", 'key2':"sample value"},{'number':"3", 'key2':"sample value"},{'number':"55", 'key2':"sample value"},{'number':"43", 'key2':"sample value"},] 之间的值,但由于有3个char长字符串,它不再起作用。

它看起来是我的基本列表:

base_list = [{'number':"3", 'key2':"sample value"},{'number':"43", 'key2':"sample value"},{'number':"55", 'key2':"sample value"},{'number':"123", 'key2':"sample value"},]

这就是我想要达成的目标:

base_list = [{'number':"123", 'key2':"sample value"},{'number':"3", 'key2':"sample value"},{'number':"43", 'key2':"sample value"},{'number':"55", 'key2':"sample value"},]
#123,3,43,55 instead of 3,43,55,123

这就是我得到的:

sortedList = sorted(base_list, key=itemgetter('number'))

我认为问题是我用于排序列表的值是字符串,但不幸的是我不能使用整数。

是否可以在没有int类型值的情况下解决问题?或者这不是问题?

这就是我现在正在做的事情:

{{1}}

2 个答案:

答案 0 :(得分:4)

代码 -

base_list = [
    {'number': "123", 'key2': "sample value"},
    {'number': "3", 'key2': "sample value"},
    {'number': "55", 'key2': "sample value"},
    {'number': "43", 'key2': "sample value"}
]


base_list.sort(key=lambda d: int(d['number']))

print(base_list)

输出 -

[{'key2': 'sample value', 'number': '3'}, {'key2': 'sample value', 'number': '43'}, {'key2': 'sample value', 'number': '55'}, {'key2': 'sample value', 'number': '123'}]

答案 1 :(得分:2)

要进行排序,请使用sorted代替list.sort

base_list = [{'number':"123", 'key2':"sample value"},{'number':"3", 'key2':"sample value"},{'number':"55", 'key2':"sample value"},{'number':"43", 'key2':"sample value"},]

result = sorted(base_list, key=lambda x: int(x['number']))

print(result)
# Output
[{'key2': 'sample value', 'number': '3'}, {'key2': 'sample value', 'number': '43'}, {'key2': 'sample value', 'number': '55'}, {'key2': 'sample value', 'number': '123'}]