我有一个defaultdict(list)
,其中一些键有共同的值,我想删除那些共同的,所以在任何键之间没有发现相同的值。因此,重复的值只保留一次(而不是完全删除)。以下是目前的情况:
defaultdict1 = {100 : [(400, 500)], 110: [(400, 500),(440, 888)], 300: [(494,585),(272, 574),(2772, 4848)]}
期望的输出将是:
new_defaultdict1 = {100 :[(400, 500)], 110: [(440, 888)], 300: [(494,585),(272, 574),(2772, 4848)]}
如果有一种方法可以在我构建defaultdict1
时进行此检查,那就更好了,但我不知道如何。如果循序渐进的过程更容易做到这一点,那也没关系。
另外,我不能确定它将如何在我的代码中结束,但是从哪个键的重复值出去并不重要,所以在这种情况下只有100
有(400,500)
对,可能是110
会保留它们。
我想了一个像这样的方法,但这并不完全是我想要的:我创建了一个列表,其中只保留字典中不重复的值:
unique_list = []
for k, v in defaultdict1.iteritems():
for member in v:
if member in unique_list:
pass
else:
unique_list.append(member)
print unique_list
unique_list现在看起来像:unique_list =[(400500),(440、888),(494585),(272、574),(2772、4848)]
问题是我不知道这些成员来自哪里。请帮忙好吗?
我想我解决了这个问题,如果我错了,请任何人纠正我,但我确实得到了正确的输出:进口集合从集合中导入defaultdict
unique_list = []
unique_defaultdict = collections.defaultdict(list)
data= {100 : [(400, 500)], 110: [(400, 500),(440, 888)], 300: [(494,585),(272, 574),(2772, 4848)]}
for k, v in data.iteritems():
for member in v:
if member in unique_list:
unique_defaultdict[k].append('None')
else:
unique_list.append(member)
unique_defaultdict[k].append(member)
print unique_defaultdict
这样我仍然保持键和它们的值"连接"到它们仍然完好无损。输出:
defaultdict(<type 'list'>, {100: [(400, 500)], 110: ['None',(440, 888)],300: [(494,585),(272, 574),(2772, 4848)]})
因此,在曾经有重复值的地方,它被'None'取代。想不出更好的了。