2016-09-19 12 views
-1

값의 특정 번호 키 번호 :파이썬 사전 :이처럼 보이는 큰 사전을 가지고

data = {'this': [{'DT': 100}], 'run': [{'NN': 215}, {'VB': 2}], 'the': [{'NNP': 6}, {'JJ': 7}, {'DT': 39517}]} 

것은 내가하고 싶은 것은 무엇 예를 들어, 반환 문의를 실행하는 것입니다 'run'는 정규 표현식와 함께 할 수있는 나는이 생각 정확히 두 개의 값 & {'VB': 2}

{'NN': 215}로 유일하지만, 방법을 찾을 수 있기 때문에 답이 하나 인 경우에는 정확히 두 개의 값과 키의 수.

+1

RegEx는 다른 데이터 형식이 아닌 문자열을 구문 분석하는 데 사용됩니다. – noahnu

+1

당신은 dict이 잘못 인쇄되어있어 우리를 도울 수 있습니다. – Dan

+1

당신은 중복 된 키 'run'을 가지고 있고, 필터 (lambda s : len (data [s]) == 2, data)와 같은 필터를 사용해 사전을 필터링하려고합니다. –

답변

2

이 일을 할 것입니다 :

print len(filter(lambda x: len(x) == 2, data.values())) 

항목의 길이가 2 filter()는 람다가 true를 돌려 항목 만 선택하고, 우리는 순서의 길이를 계산하면 람다는 true를 돌려줍니다 filter()에 의해 반환되었습니다. 을 사용하면 키 대신 dict에서 값을 필터링 할 수 있습니다 (이는 보통 data이 제공했을 것입니다). 수를 원했기 때문에 값만 있으면됩니다.

0

이렇게하려면 regex이 필요하지 않습니다. 정규 표현식은 문자열을 구문 분석하기위한 것입니다. ,

data = {'this': [{'DT': 100}], 'run': [{'NN': 215}, {'VB': 2}], 'the': [{'NNP': 6}, {'JJ': 7}, {'DT': 39517}]} 
key_list = [k for k, v in data.items() if len(v) == 2] 
# key_list => ['run'] 

는 값의 목록을 가져 오려면로 len 전화 : 더 나은 방법은 len() == 2의 목록으로 값으로 key를 저장하는 새 목록을 만드는 것입니다 그냥 길이를 얻을

>>> len(key_list) 
1 
0

및 원하는 길이를 세십시오.

>>> map(len, data.values()).count(2) 
1 
관련 문제