如何删除元组列表中第二个元素重复出现的元组列表中的所有事件?从元组列表中删除所有出现的元素
我:
a = [('a',1),('b',3),('c',1),('d',1),('e',5),('f',1)]
我试图返回
[('b',3),('e',5)]
我试图
a = list(set(a))
但不会删除所有事件,是有办法做到这一点无需导入任何库?
如何删除元组列表中第二个元素重复出现的元组列表中的所有事件?从元组列表中删除所有出现的元素
我:
a = [('a',1),('b',3),('c',1),('d',1),('e',5),('f',1)]
我试图返回
[('b',3),('e',5)]
我试图
a = list(set(a))
但不会删除所有事件,是有办法做到这一点无需导入任何库?
尝试以下操作:
a = [('a',1),('b',3),('c',1),('d',1),('e',5),('f',1)]
reduced = [y for x in a for y in x]
[x for x in a if reduced.count(x[0]) == 1 and reduced.count(x[1]) == 1]
# [('b', 3), ('e', 5)]
这拉平原来的元组列表到一个列表。然后它遍历原始列表,并为每个元组检查其元素是否仅位于展平列表中一次。如果是这样,它保持它;否则,它会丢弃它。
您也可以使用Python字典对于这一点(如果内的元组的第一要素是彼此不同):
list({k:v for k,v in dict(a).items() if list(dict(a).values()).count(v)==1}.items())
这里的想法是你的元组的列表转换成一个字典,并保持key-value
对count
value
部分字典的values
是1.
我希望这有助于。
嗯,怎么样:
def UniqueTuples(tuples):
seen, unique = set(), list()
for x, y in tuples:
if y not in seen:
seen.add(y)
unique.append((x, y))
return unique
你有,你已经尝试过的任何代码?这个网站是更多的代码错误的帮助,而不是编写代码 –
刚刚编辑帖子 – Neil
我不确定你的意思是“所有第二个元素的出现”。你的例子列表中的第二个元素是'('b',3)'。 –