【发布时间】:2020-02-05 04:58:57
【问题描述】:
我有两本词典:
mems = {'member2': ['PCP1', 'PCP2'],
'member6': ['PCP1', 'PCP5'],
'member7': ['PCP2', 'PCP4', 'PCP5'],
'member9': ['PCP1', 'PCP5']}
provs = {'PCP1': 2, 'PCP2': 1, 'PCP4': 1, 'PCP5': 1}
如何检查这些列表值中的项目是否唯一并且没有出现在字典中的其他任何位置?如果它是唯一的,则将“成员”和“PCP”附加到名为matches = dict() 的新字典中,从'mems' 中删除该成员,然后将任何其他剩余的“PCP”添加到provs 中的计数中。哦,删除mems中唯一的那个
结果应该是这样的
mems = {'member2': ['PCP1', 'PCP2'],
'member6': ['PCP1', 'PCP5'],
'member7': ['PCP2', 'PCP4', 'PCP5'],
'member9': ['PCP1', 'PCP5']}
provs = {'PCP1': 2, 'PCP2': 2, 'PCP5': 2}
matches = ['member7' : 'PCP4'}
我不知道该怎么做。我尝试开始为mems 中的 PCP 创建一个计数器,并找到带有 1 的计数器,然后添加到 matches,但它给出了错误的成员“member9”。
pcpCounts = dict(collections.Counter(itertools.chain.from_iterable(new_members.values())))
print(pcpCounts)
{'PCP1': 3, 'PCP2': 2, 'PCP4': 1, 'PCP5': 2}
for (k,v), (k2,v2) in zip(memsCounter.items(), pcpCounter.items()):
if v2 == 1:
match[k] = k2
print(matches)
{'member9': 'PCP4'}
当我这样做时,为什么不能保持完整性。更重要的是,有没有更好的方法呢?
【问题讨论】:
-
不清楚你想做什么。
标签: python dictionary