删除或更改列表中特定的重复元素(并非所有重复元素)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除或更改列表中特定的重复元素(并非所有重复元素)相关的知识,希望对你有一定的参考价值。
我正在尝试制作一些可以读取字符元素列表的内容,并告诉您确切每个元素重复多少次。我的想法是使用for循环并打印告诉我所需信息的语句来遍历列表。
这是我的第一个主意:
list = ["code", "this", "code"]
for i in range(len(list)):
list.count(list[i])
print(" is repeated ".format(list[i]) + str(list.count(list[i])) + " times")
当我运行此代码时,它打印出来:
代码重复2次
重复1次
代码重复2次
现在,实现我的目标的下一步是停止两次打印两次“代码重复”。这是我的麻烦开始。我一直在寻找从列表中删除特定重复项的方法,但我发现的是删除所有重复项的方法(我不希望这样做,因为那样会使代码经过列表的第一个元素后变得无用)。因此,我的问题如下:
一旦打印出重复声明,是否有可能从列表中删除特定的重复元素?这意味着,一旦打印出“代码重复2次”,列表将仅更改为[“ this”]。
是否可以更改特定重复元素的“值”?这意味着,一旦打印出“代码重复2次”,该列表就会更改为(例如)为[0,“ this”,0],这样我可以使用if语句在元素为=时不打印任何内容= 0。
要清楚,我只想知道:
--如果可能的话:我该如何更改编码以实现该目标。
--如果不可能:我可能能够做些其他事情来实现自己的目标。
set
或者,lst = ["code", "this", "code"]
for elem in sorted(set(lst), key = lambda x:lst.index(x)):
print(f"elem is repeated lst.count(elem) times")
:
dict.fromkeys
输出:
dict.fromkeys
您也可以查看for elem in dict.fromkeys(lst):
print(f"elem is repeated lst.count(elem) times")
:
code is repeated 2 times
this is repeated 1 times
相同输出。
您所说的在某种意义上也是可能的,但是它看起来不是pythonic,我也不认为有必要,但是这里是代码。输出相同。注意:在迭代列表时修改列表是个坏主意。
以上是关于删除或更改列表中特定的重复元素(并非所有重复元素)的主要内容,如果未能解决你的问题,请参考以下文章
Python 3,如果列表中包含特定的东西,如何删除部分元素3 [重复]