我有一个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 = [(400,500),(440,888),(494,585),(272,574),(2772,4488)]
问题在于我忘记了这些成员的来源。有什么帮助吗?
答案 0 :(得分:0)
我想我解决了,如果我错了,请任何人纠正我,但我确实得到了正确的输出: 导入集合 来自集合import 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)]})
因此,曾经有重复值的地方会被“无”字替换。无法想到更好的事情。