在档案中:
A01,rose
C15,tiger
C02,cat
B03,rose
我试图将它们变成dict,但是我被困住了,因为我不知道如何从dict中删除重复的val。
with fop as f:
for line in f:
(key, val) = line.strip().split(',')
d[str(key)] = val
有什么建议吗?
预计得到:
C15,tiger
C02,cat
答案 0 :(得分:0)
字典键默认是唯一的,因此您可以使用该属性使其更好地工作。
这样的事情应该可以解决问题(尽管你必须反转输出的键/值,但我会把它作为练习留给你):
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]
答案 1 :(得分:0)
只需跟踪您在构建字典时看到的值:
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)
答案 2 :(得分:-1)
# turn the data into a dictionary
with fop as f:
data = dict(line.strip().split(',') for line in f)
可以通过将列表或可迭代元组传递给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的值,并使用它来创建包含所有唯一值的新字典。