【发布时间】:2013-12-10 06:02:47
【问题描述】:
如果键的值在字典中重复,我需要创建一个删除键的函数。比如……
remove_dups({1:4, 2:4, 3:2})
{3:2}
remove dups({1:2, 2:5})
{1:2, 2:5}
我不知道该怎么做以及从哪里开始,请帮助! 需要知道如何在没有列表理解或导入的情况下执行此操作。
【问题讨论】:
标签: python dictionary key
如果键的值在字典中重复,我需要创建一个删除键的函数。比如……
remove_dups({1:4, 2:4, 3:2})
{3:2}
remove dups({1:2, 2:5})
{1:2, 2:5}
我不知道该怎么做以及从哪里开始,请帮助! 需要知道如何在没有列表理解或导入的情况下执行此操作。
【问题讨论】:
标签: python dictionary key
def remove_dups(d):
c, result = {}, {}
for item in d.values():
c[item] = c.get(item, 0) + 1
for k, v in d.items():
if c[v] == 1:
result[k] = v
return result
最好和更简单的方法是使用Counter 和这样的dict理解
from collections import Counter
def remove_dups(d):
c = Counter(d.values())
return {k:v for k, v in d.items() if c[v] == 1}
【讨论】:
字典有一个功能 - dict.values() - 将所有值作为列表获取
{1:4, 2:4, 3:2}.values() = [4,4,2]
然后您可以使用计数器(从集合导入计数器)-检查计数大于 1 的值并删除与 do 值关联的键。
(我没有给出完整的代码,因为这听起来像是一个家庭作业)
【讨论】: