簡體   English   中英

如何根據相似的字段對元組列表進行分組,然后根據另一個字段保持最大值? (不使用熊貓)

[英]How to group a list of tuples based on similar fields and then keep the maximum based on another field? (without using Pandas)

我有類似的元組列表

bottles = [(1234, 'ICED', 'MOC12', 3), (1234, 'ICED', 'MOC12', 2), (3456, 'HOT', 'CAR23', 1), (3456, 'HOT', 'YUP23', 2)]

我想要每個組對應於最后一個字段的最大值的元組。 這些組由前三個值定義。

輸出:

result = [(1234, 'ICED', 'MOC12', 3),(3456, 'HOT', 'CAR23', 1),(3456, 'HOT','YUP23', 2)]
bottles = [(1234, 'ICED', 'MOC12', 3), (1234, 'ICED', 'MOC12', 2), (3456, 'HOT', 'CAR23', 1), (3456, 'HOT', 'YUP23', 2)]

sorted(bottles, key= lambda x: x[:3])
>>> [(1234, 'ICED', 'MOC12', 3),
 (1234, 'ICED', 'MOC12', 2),
 (3456, 'HOT', 'CAR23', 1),
 (3456, 'HOT', 'YUP23', 2)]

您也可以使用max而不是sorted直接獲取max。

根據您的評論,這應該可行:

from itertools import groupby

bottles = [(1234, 'ICED', 'MOC12', 3), (1234, 'ICED', 'MOC12', 2), (3456, 'HOT', 'CAR23', 1), (3456, 'HOT', 'YUP23', 2)]
print([max(group) for key, group in groupby(sorted(bottles), lambda a: a[:3])])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM