Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何删除列表中集合最少的元素,而只保留集合最多的元素?_Python_List_Set - Fatal编程技术网

Python 如何删除列表中集合最少的元素,而只保留集合最多的元素?

Python 如何删除列表中集合最少的元素,而只保留集合最多的元素?,python,list,set,Python,List,Set,我有一个列表,其中每个元素包含未知数量的集合。(列表中的集合根据用户在程序中所做的选择而有所不同。)现在我想删除集合数最少的所有元素,只保留集合数最多的一个或多个元素 我的列表可以如下所示: [{'Chocolate'}, {'Chocolate'}, {'JellyBean', 'Chips'}] 在本例中,我希望只保留最后一个元素,因为它包含两个集合,其余的只包含一个集合。但有时有几个元素的集合数最高,然后我想把它们全部保留下来 我试着做一些类似的事情: if min(len(list))

我有一个列表,其中每个元素包含未知数量的集合。(列表中的集合根据用户在程序中所做的选择而有所不同。)现在我想删除集合数最少的所有元素,只保留集合数最多的一个或多个元素

我的列表可以如下所示:

[{'Chocolate'}, {'Chocolate'}, {'JellyBean', 'Chips'}]
在本例中,我希望只保留最后一个元素,因为它包含两个集合,其余的只包含一个集合。但有时有几个元素的集合数最高,然后我想把它们全部保留下来

我试着做一些类似的事情:

if min(len(list)) != max(len(list)):

list.remove(min(len(list)))
但是Python只是说,“'int'对象是不可编辑的”,我可以理解为什么,但不能理解如何思考


如果有人帮助我,我会非常感激的

您需要迭代列表一次以确定最大值,然后再次查找要保留的元素。将有更奇特的解决方案以尽可能最有效的方式完成,但将更难理解

example_list = [('Chocolate'), ('Chocolate'), ('JellyBean', 'Chips')]
max_length = 0
for item in example_list:
    if len(item) > max_length:
        max_length = len(item)
new_list = []
for item in example_list:
    if len(item) == max_length:
        new_list.append(item)

您可能可以执行删除操作,但通常Python会对更改您正在积极迭代的内容感到恼火。

为什么不创建一个新列表,其中包含最大数量的元素。请尝试以下内容:

list_of_sets= [{'Chocolate'}, {'Chocolate', 'Candy'}, {'JellyBean', 'Chips'}]
max_len=max(len(s) for s in list_of_sets)
final_list = [s for s in list_of_sets if len(s)==max_len]
final_list
结果:

  [{'Candy', 'Chocolate'}, {'Chips', 'JellyBean'}]

set
是指无序的元素集合,即
{'JellyBean',Chips'}
是一个集合,
{'Chocolate'}
是一个集合。您拥有的是一个列表,其中每个元素都是一个集合。要删除元素最少的集合。这可以通过
list.remove(min(list,key=len))
来完成。你是说集合中元素最少
{a}
{a,b}
都是单数集…感谢您分享我能理解的简单代码!非常有用谢谢!你的代码很好看,但是很难理解,如果你的新程序员在编程时你会习惯这种语言。这个脚本与giraffeman91基本相同,但更短。这是人们喜欢python的原因之一。简洁。