gpt4 book ai didi

python - 返回每组具有最高值的列表

转载 作者:行者123 更新时间:2023-12-01 01:17:28 25 4
gpt4 key购买 nike

我目前有一个位置列表,我想整理一下。

该列表如下所示:

list = [['Location 1', 5],['Location 2', 5],['Location 3', 5],['Location 1', 4],['Location 2', 6],['Location 3', 5],['Location 1', 5],['Location 2', 5]]

目标是为每个位置选择索引 1 中每个列表的最高值。最终结果应如下所示:

correctList = [['Location 1', 5],['Location 2', 6],['Location 3', 5]]

具有相同整数值的位置没有优先权。

我现在拥有的解决方案是根据名称将每个位置附加到自己的列表中。然后从每个列表中对每个位置列表使用 max() 操作。

最佳答案

您可以使用collections.defaultdict对于 O(n) 解决方案:

from collections import defaultdict

L = [['Location 1', 5],['Location 2', 5],['Location 3', 5],['Location 1', 4],
['Location 2', 6],['Location 3', 5],['Location 1', 5],['Location 2', 5]]

dd = defaultdict(int)

for location, value in L:
dd[location] = max(dd[location], value)

print(dd)
# defaultdict(int, {'Location 1': 5, 'Location 2': 6, 'Location 3': 5})

这给出了字典映射。如果您热衷于列表列表:

res = list(map(list, dd.items()))

print(res)
# [['Location 1', 5], ['Location 2', 6], ['Location 3', 5]]

关于python - 返回每组具有最高值的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54186243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com