gpt4 book ai didi

python - 合并两个列表但保持相同的出现次数

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:51 25 4
gpt4 key购买 nike

我有一个问题,我找不到一个好的答案:我想合并两个列表,但每个对象的出现次数相同例如:

list1 = [2,3,7]
list2 = [2,2,5]

合并这两个列表后,结果应该是这样的:

res = [2,2,3,5,7] #it does not need to be sorted

观察一开始是三个“2”,合并后应该只有两个“2”

我找到的最接近的是在这篇文章中:Combining two lists and removing duplicates, without removing duplicates in original list

但这并不像我想要的那样工作。

另一个例子:

l1 = [2]
l2 = [3]
l3 = [2,2]
l4 = [5]
l5 = [2,3]

#after adding all the lists above
result = [2,2,3,5]

最佳答案

据我了解您的问题,您希望每个数字以其在任何输入列表中出现的最大频率出现在结果中。您可以使用 collections.Counter 获取每个单独列表的频率,并对它们使用 | 运算符来合并它们:

>>> c = collections.Counter([2, 2, 5])
>>> d = collections.Counter([2, 3, 7])
>>> list((c | d).elements())
[2, 2, 3, 5, 7]

这是一个连接任意数量列表的函数:

def merge_max_frequency(*iterables):
return reduce(operator.or_, map(collections.Counter, iterables)).elements()

此函数返回一个可迭代对象而不是一个列表——只需对其应用 list() 即可获得一个列表。

关于python - 合并两个列表但保持相同的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19246854/

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