2014-09-21 2 views
-4

사전과 목록이 있습니다. 목록에서 나타나는 값을 사전에서 삭제하려고합니다 (이러한 값이 사전에 표시되는 경우). 이러한 요소는 여러 번 사전에 나타날 수 있습니다.Python 사전에서 일부 요소 삭제

예 :
my_dic={'key1':['a','b','c'],'key5':['d','a','e']}.
키 (key1 및 key5)를 호출하지 않고 'a'및 'c'값을 삭제하려고합니다.

어떻게하면됩니까? 이 같은

+1

생각? 사전은 간단한 컨테이너가 아닌 키 - 값 매핑입니다. 키 또는 값을 보든, 또는 무엇을보고 있는지 여부는 분명하지 않습니다. – user2357112

+0

죄송합니다, 명확하지 않았습니다. 나는 값을 참조한다. 열쇠는이 단계에서 유용하지 않지만 앞으로의 단계를 위해 열쇠를 보관하고 싶습니다. –

+0

이 질문에 대해 왜 downvote 이유를 제공 할 수 있습니까? –

답변

1

뭔가 내가 그것을 사전에 존재하는 무언가를 위해 무엇을 의미 하는가

lst = ['val1','val2','val3'] 
dct = { 
    'key1': ['val1','val6'], 
    'key2': ['val2','val45'], 
    'key3': ['val52','val48'] 
} 

for key in dct.keys(): 
    vals = dct[key] 
    for value in vals: 
     if value in lst: 
      while value in vals: 
       vals.remove(value) 
    dct[key] = vals 


print dct >>> {'key3': ('val52', 'val48'), 'key2': ('val45',), 'key1': ('val6',)} 
+0

그리고 * vals *에 값이 두 번 이상 나타납니다? – volcano

+0

값은 val에 한 번만 나타날 수 있습니다. 더 많은 값 목록에 나타날 수 있습니다 –

+1

_while_ _if_ redundant가 있음을 확인 했습니까? – volcano

1
target_dict = {'key1':['a','b','c'],'key5':['d','a','e']} 
values_to_detele = ['a', 'c'] 
In [225]: for val_list in target_dict.itervalues(): 
    for del_val in values_to_detele: 
     while del_val in val_list: 
      val_list.remove(del_val) 
    .....:    

In [226]: target_dict 
Out[226]: {'key1': ['b'], 'key5': ['d', 'e']} 
+0

AttributeError : 'dict'객체에 'itervalues'속성이 없습니다. –

+2

Python 3을 사용하는 경우 대신 'values'를 사용하십시오. – Matthias

관련 문제