我有一份字典目录。我希望每个唯一的api只有一个结果,结果需要根据优先级显示:0、1、2。我可以知道我该怎么做吗?
数据:
[
{'api':'test1', 'result': 0},
{'api':'test2', 'result': 1},
{'api':'test3', 'result': 2},
{'api':'test3', 'result': 0},
{'api':'test3', 'result': 1},
]
预期产量:
[
{'api':'test1', 'result': 0},
{'api':'test2', 'result': 1},
{'api':'test3', 'result': 0},
]
4条答案
按热度按时间rjee0c151#
不像别人那么干净的解决方案,但我觉得循序渐进,通俗易懂一点
输出
bn31dyow2#
沉迷于代码高尔夫:
结果:
使用itertools.groupby实用程序,将iterable fed作为第一个参数,并使用
sorted
由api
以及result
并按result
只是。groupby
返回键的iterable和组中项的iterable,如下所示:使用列表理解,由于组已经排序,
next
用于获取组中的第一个项,并且丢弃组键。ki0zmccv3#
假设输入
data
你可以做经典的sqlgroupby
:输出:
lh80um4z4#
试试这个,它会给你
首先对所有的api进行排序,然后为每个api找到第一个api,结果就出来了。