如何删除重复val的字典?
在文件:如何删除重复val的字典?
A01,rose
C15,tiger
C02,cat
B03,rose
我试图让他们进入字典,但我坚持,因为我不知道如何从字典中删除重复VAL。
with fop as f:
for line in f:
(key, val) = line.strip().split(',')
d[str(key)] = val
有什么建议吗?
有望获得:
C15,tiger
C02,cat
词典按键,默认情况下唯一的,这样你可以使用这个属性,使这项工作更好。
像这样的东西应该做的伎俩(但你必须扭转为输出键/值,但我会离开,作为一个练习给你):
d = {}
with fop as f:
for line in f:
key, val = line.strip().split(',')
d[val] = key
print d.items()
注意,这给每值1个关键,如果你只是在寻找去除任何重复的项目会略有不同(但相近):
d = {}
duplicates = {}
with fop as f:
for line in f:
key, val = line.strip().split(',')
if val in d:
duplicates[val] = True
d[val] = key
for duplicate in duplicates:
del d[duplicate]
如果我理解正确,他不需要在文件中重复的条目。 – RvdK 2014-10-20 10:09:53
@RvdK我试过你的代码,但我得到'NameError:名称'd'未定义',任何建议? – ThanaDaray 2014-10-20 10:18:57
你原来的问题有'd',我预计它仍然会在那里;) – Wolph 2014-10-20 10:21:54
# turn the data into a dictionary
with fop as f:
data = dict(line.strip().split(',') for line in f)
字典可以通过传递一个列表或可迭代元组进行到t他内置dict
。这使得将数据转换成字典非常简单。
from collections import Counter
# extract unique values
value_counts = Counter(data.values())
unique_values = set(value for value, count in value_counts.items() if count == 1)
unique_data = dict((key, value) for key, value in data.items()
if value in unique_values)
的Counter
类是字典计数发生在一个可迭代值的次数。然后,我们可以提取计数为1的值,并使用该值创建一个包含所有唯一值的新字典。
只要保持跟踪哪些价值,你已经看到了构建字典时:
seen = set()
d = dict()
with open('some-file') as f:
for line in f:
if line.strip():
for key,value in line.split(','):
if value not in seen:
d[key] = value
seen.add(value)
你的意思是删除的是重复的条目?那么不要离开那些? – RvdK 2014-10-20 10:08:49
请显示您的尝试并解释为什么它不起作用,然后提出问题。 – wwii 2014-10-20 10:09:33
@RvdK是的,我想删除重复的条目。 – ThanaDaray 2014-10-20 10:14:45