如何删除元组列表中的重复项

How to remove duplicate in a list of tuples

我一直在尝试使用 defaultdict / dictionary set 来删除重复项,但是,我无法获得所需的输出。我将在下面详细说明。我希望删除以下元组列表中的重复项:

List of tuples: [('Samsung', 'Handphone'), ('Samsung', 'Handphone),('Samsung','Tablet'),('Sony','Handphone')]

我想要的输出是:

Output: {('Samsung','Handphone','Tablet'),('Sony','Handphone')}

我想删除元组中的那些重复值,并将 "tablet" 与 "Samsung" 一起附加到元组中,因为它们属于同一家公司。我试过使用 defaultdict / dictionary。但是我无法得到它。我该怎么做?欢迎大家提出任何建议或想法。谢谢。

d = {}
t0 = [('Samsung', 'Handphone'), ('Samsung', 'Handphone'),('Samsung','Tablet'),('Sony','Handphone')]
for t in t0:
    d.setdefault(t[0], set()).add(t[1])
print(tuple(tuple([k]+list(v)) for k, v in d.items()))

打印

(('Sony', 'Handphone'), ('Samsung', 'Handphone', 'Tablet'))

这与我所能达到的尽可能接近你想要的输出(你的确切要求是不可能的,因为 {} 文字包含字典或集合,并打印一个以这些元组作为内容的集合文字给出这个:

set([('Sony', 'Handphone'), ('Samsung', 'Handphone', 'Tablet')])

这不是您要求的,尽管它与设置文字相同

{('Sony', 'Handphone'), ('Samsung', 'Handphone', 'Tablet')}

正如@cco 所说,你想要的输出是不可能的,如果你想用你的字典做进一步的分析,那么拥有键和值是最好的主意,

试试这个,

from collections import defaultdict
a=[('Samsung', 'Handphone'), ('Samsung', 'Handphone'),('Samsung','Tablet'),('Sony','Handphone')]
a=list(set(a))
final={}
dic=defaultdict(list)
for k,v in a:
    dic[k].append(v)

for l,m in dic.iteritems():
    final[l]=m
print final

输出:

{'Sony': ['Handphone'], 'Samsung': ['Tablet', 'Handphone']}