【问题标题】:List ordering based on dict key value with string number [duplicate]基于带有字符串编号的dict键值的列表排序[重复]
【发布时间】:2016-05-20 18:55:40
【问题描述】:

我有一个简单的list dict 对象,我想根据number 键的值对其进行排序。我可以在这里找到一个正常工作的解决方案,直到我的值在0-99 之间,但由于有 3 个字符长的字符串,它不再工作了。

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

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

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

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

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

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

这就是我现在的做法:

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

【问题讨论】:

  • 您的键功能按字面意思对列表进行排序。将数字转换为int 以获得正确的结果。

标签: python list sorting dictionary


【解决方案1】:

代码 -

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

【讨论】:

  • 我正要点击按钮发布这个确切的解决方案。 ;-) 赞成
【解决方案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'}]

【讨论】:

  • 重复回答 Vedang Mehta
  • @piRSquared,我发帖后才看到他的回答。他的回答对列表进行了适当的排序,但我不是。我应该删除它吗?
  • 我不是模组,但我愿意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-19
  • 1970-01-01
  • 2014-01-07
  • 2018-04-20
  • 2022-01-16
  • 2018-03-31
  • 1970-01-01
相关资源
最近更新 更多