gpt4 book ai didi

python - 如何找到具有最大元素数量的最大字符串类型子列表(不重复)?

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

我想获取具有最大不重复字符串数的子列表。

下面的代码说集合不可散列,这是有道理的(TypeError: unhashable type: 'set'),但我找不到解决此问题的方法。

from collections import Counter
mylist = [{'task'}, {'task', 'time', 'element'}, {'task', 'current', 'time', 'element'}, {'task', 'element'}, {'task'}, {'task'}, {'task', 'element'}, {'task', 'element'}, {'task', 'element'}, {'task', 'push', 'stack', 'element'}]
find_max_lists = max(k for k,v in Counter(mylist).items() if v>1)

输入

[{'task'}, {'task', 'time', 'element'}, {'task', 'current', 'time', 'element'}, {'task', 'element'}, {'task'}, {'task'}, {'task', 'element'}, {'task', 'element'}, {'task', 'element'}, {'task', 'push', 'stack', 'element'}]

输出

[{'task', 'current', 'time', 'element'},{'task', 'push', 'stack', 'element'}]

输入

[{'task'}, {'task', 'time', 'element'}, {'task', 'current', 'time', 'element'}, {'task', 'element'}, {'task'}, {'task'}, {'task', 'element'}, {'task', 'element'}, {'task', 'element'}, {'task', 'current', 'time', 'element'}]

输出

[{'task', 'current', 'time', 'element'}]

最佳答案

您可以在没有计数器的情况下完成此操作。由于您的列表包含集合,并且集合中不包含重复的项目,因此您只需检查输入列表中长度最高的集合项目,然后创建另一个列表,其中的项目的长度与最大长度匹配。

这里是:

max_len = len(sorted(mylist, key = lambda x: len(x), reverse = True)[0])
output = [k for k in mylist if len(k)==max_len]
# For the second case where the final list may contain same set-item
uniq_list = [set(x) for x in set(tuple(x) for x in output)]

输出:

[{'time', 'task', 'current', 'element'}, {'task', 'push', 'stack', 'element'}]

关于python - 如何找到具有最大元素数量的最大字符串类型子列表(不重复)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56338613/

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