2016-11-22 60 views
0
dct={'a':3,'b':1,'c':1,'d':1,'e':2,'f':2} 

for key in dct.values(): 
    #code 

我无法找到一个方法来删除所有具有相同价值观的钥匙,我的输出应该是:删除所有值的多个occurence键在Python

{“一”:3}

基本上我只希望有除去值的多次出现一个字典,该值没有特别1或2可以是任何#

+0

的可能的复制[从Python字典中删除项目的最佳方式?(http://stackoverflow.com/questions/5447494/best-way-to-remove- – Aravind

回答

2

尝试此字典理解:

new_dct = {k: v for k, v in dct.items() if list(dct.values()).count(v) <= 1} 

这不会从您的原始字典中删除,但会生成一个新的字典,其中只有键值和值不会在原始字典中重复。 *


*:请注意,在Python 3.x都有dictvalues() method对象返回view object,而在Python 2.x中它returns a normal list对象。因此在这里需要调用list()以便使用count()列表方法,因为OP使用的是Python 3.x.如果您使用的是Python 2.x,则可以直接删除list()调用,然后直接拨count()dct.values()

+0

elethan我收到错误,说dict_values没有任何属性计数 – CAVS

+0

@CAVS尝试'dct.values()'(你在你的例子中使用相同的调用),而不是'dict.values ()'或'dict_values'。 – elethan

+0

我用dct.values()并得到了错误 – CAVS

0

简单的解决方案

dct={'a':3,'b':1,'c':1,'d':1,'e':2,'f':2} 
d = {} 
allu = []; 
lulu = []; 



for k, v in dct.items(): 
    if v in allu: 
    lulu.append(v) 
    allu.append(v) 

d = dict(dct) 
for k,v in d.items(): 
    if v in lulu: 
    del dct[k] 

print(dct)