如何删除元组列表中的重复项
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']}
我一直在尝试使用 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']}