嗨,我有一本词典,里面有这样的数据
Dict={'file1.txt':['a','B','C','D','E'],'file2.txt':['a','F','C','G','E'],'file3.txt':['t','F','C']}
有没有人可以帮我写一段代码,删除重复的值并将文件更改为
Dict={'file1.txt':['B','D'],'file2.txt':['G'],'file3.txt':['t']}
(仅应保留唯一值)
# 回答1
不要使用
迪克特
作为一个识别符。它将屏蔽内置函数
Dict()
。
以下是几种方法:
- dd = {'file1.txt': ['A', 'B' , 'C' , 'D' , 'E' ] ,
- 'file2.txt': ['A', 'F' , 'C' , 'G' , 'E' ] ,
- 'file3.txt': ['T', 'F' , 'C']}
-
- # Create a dictionary with a count of labels
- dd1 = {}
- for seq in dd.values():
- for label in seq:
- v = dd1.get(label, 0)
- dd1[label] = v+1
-
- for key in dd:
- dd[key] = [label for label in dd[key] if dd1[label] == 1]
- print dd
-
-
- dd = {'file1.txt': ['A', 'B' , 'C' , 'D' , 'E' ] ,
- 'file2.txt': ['A', 'F' , 'C' , 'G' , 'E' ] ,
- 'file3.txt': ['T', 'F' , 'C']}
-
- # Create an extended list from dd.values()
- extended = dd.values()[0][:]
- for seq in dd.values()[1:]:
- extended.extend(seq[:])
- for key in dd:
- dd[key] = [label for label in dd[key] if extended.count(label) == 1]
- print dd
产出:
- >>> {'file1.txt': ['B', 'D'], 'file3.txt': ['T'], 'file2.txt': ['G']}
- {'file1.txt': ['B', 'D'], 'file3.txt': ['T'], 'file2.txt': ['G']}
- >>>