세트의 DICT 사용 : 당신은 공통점이 하나 이상의 키를 가지고있는 사람을 원하는 경우 다음
d={ 'k1': [1,2,3],
'k2': [2],
'k3': [10],
'k4': [3,2]
}
com_keys={}
for k, v in d.items():
for e in v:
com_keys.setdefault(e, set()).add(k)
print com_keys
# {1: set(['k1']), 10: set(['k3']), 3: set(['k1', 'k4']), 2: set(['k2', 'k1', 'k4'])}
을 그냥 DICT 이해 (이상 비단뱀에 대한 등)으로 필터링 :
>>> {k:v for k,v in com_keys.items() if len(v)>1 }
{2: set(['k2', 'k1', 'k4']), 3: set(['k1', 'k4'])}
이 얻을 작은 당신의 DICT 중 하나가 할 '단일 항목'으로 반복 (리스트, 튜플, 등)을 지원하는 컨테이너의 비 균일 조합 인 경우 더 도전 for
루프 (문자열, 유니 코드, 다른 dicts 등)로 반복하지 않으려는 반복 (ints, floats) 또는 지원하지 않는 항목
예를 들어 목록과 '단일 항목' 정수 및 문자열 :
import collections
d={ 'k1': [1,2,3],
'k2': 2,
'k3': [10],
'k4': [3,2],
'k5': 'string',
'k6': ['string',2]
}
com_keys={}
for k, v in d.items():
if not isinstance(v, basestring) and isinstance(v, collections.Iterable):
for e in v:
com_keys.setdefault(e, set()).add(k)
else:
com_keys.setdefault(v, set()).add(k)
print com_keys
# {1: set(['k1']), 10: set(['k3']), 3: set(['k1', 'k4']), 2: set(['k2', 'k1', 'k6', 'k4']), 'string': set(['k6', 'k5'])}
print {k:v for k,v in com_keys.items() if len(v)>1 }
# {2: set(['k2', 'k1', 'k6', 'k4']), 3: set(['k1', 'k4']), 'string': set(['k6', 'k5'])}
결과는 무엇입니까? – ooga
사전에있는 하나의 키가 둘 이상의 값을 가질 수 있습니까? 아니면 하나 이상의 값을 포함 할 수있는 사전 값 목록 (튜플, 세트, 컨테이너)입니까? – Hyperboreus
어떤 키에 키 값이 있는지 알고있는 것이 중요합니까? –