猿问

Python 列表中字典的一个排序问题,如何按某个key的大小进行排序?

# 有两个列表如下
a = [{'info1' : 'someinfo', 'date' : 1}, {'info1' : 'someinfo', 'date' : 4}, {'info1' : 'someinfo', 'date' : 7}, {'info1' : 'someinfo', 'date' : 13}]
b = [{'info1' : 'someinfo', 'date' : 3}, {'info1' : 'someinfo', 'date' : 8}]
# 需要按照列表中的字典的date的大小,由小到大进行排序

# 得到c
c = [{'info1' : 'someinfo', 'date' : 1}, {'info1' : 'someinfo', 'date' : 3}, {'info1' : 'someinfo', 'date' : 4}, {'info1' : 'someinfo', 'date' : 7}, {'info1' : 'someinfo', 'date' : 8}, {'info1' : 'someinfo', 'date' : 13}]

a 的顺序为 :1、4、7、13
b 的顺序为 :3、8

排序后:
c的顺序为 :1、3、4、7、8、13

需要按照列表中的字典的date的大小,由小到大进行排序,python代码怎么写?

有可能不止一个a,b,可能有数个列表需要这样的排序,怎么写?

怎么排序比较快且代码简洁点?

谢谢

忽然笑
浏览 630回答 2
2回答

繁花如伊

a = [{'info1': 'someinfo', 'date': 1}, {'info1': 'someinfo', 'date': 4}, {'info1': 'someinfo', 'date': 7}, {'info1': 'someinfo', 'date': 13}] b = [{'info1': 'someinfo', 'date': 3}, {'info1': 'someinfo', 'date': 8}] new_dic, result = dict(), [] # 将date的值作为key构建新的字典 for d in a + b: new_dic[d.get('date')] = d # 使用sorted()对新的字典排序,然后将需要的结果添加到列表中 for d in sorted(new_dic.items()): result.append(d[1]) print(result) 功能实现了,不过这个时间复杂度...最简单的办法应该是这样,一行搞定: print(sorted(a + b, key=lambda dic: dic['date']))

PIPIONE

不好意思。。。想起来怎么干了,平时排序用的少了。。 这个问题直接用sorted函数加上高阶key函数就可以解决了,代码挺简洁的。。 all_bar = [] a = [{'info1' : 'someinfo', 'date' : 1}, {'info1' : 'someinfo', 'date' : 4}, {'info1' : 'someinfo', 'date' : 7}, {'info1' : 'someinfo', 'date' : 13}] b = [{'info1' : 'someinfo', 'date' : 3}, {'info1' : 'someinfo', 'date' : 8}] c = [{'info1' : 'someinfo', 'date' : 1}, {'info1' : 'someinfo', 'date' : 3}, {'info1' : 'someinfo', 'date' : 4}, {'info1' : 'someinfo', 'date' : 7}, {'info1' : 'someinfo', 'date' : 8}, {'info1' : 'someinfo', 'date' : 13}] all_bar.extend(a) all_bar.extend(b) sorted(all_bar, key=lambda dic : dic['date']) 这样无论原本的数据有几个,先进行extend,最后再排序就可以了 效率不会太差
随时随地看视频慕课网APP

相关分类

Python
我要回答