2013-09-03 2 views
1

나는 용어가 무엇인지 모르겠지만, 기본적으로 은 원시 데이터를 파싱 한 함수에서 나온 defaultdict [(word, value), ...] 형태로되어 있습니다.파이썬 구문 : 돌연변이/감소 기본 명령?

다른 함수가 있습니다 : reduceVal(word_set, min_val), reduceWord(word_set, *args) 등 : 값이 min_val보다 작고 [args]에 각각 (단어)가있는 쌍을 제거합니다. 그것들은 모두 같은 구조를 따르고 있습니다.

def reduceVal(word_set, value): 
    "Returns word_set with (k, v) pairs where v > value)" 
    rtn_set = defaultdict() 
    for (k, v) in word_set.items(): 
     if v > value: 
      rtn_set.update({k:v}) 
    return rtn_set 

이 표현하는 더 간결 또는 파이썬, 방법이 있다면 나는 심지어 전체 기능

답변

1

사용하십시오 DICT-이해를 정의 어쩌면 새로운 rtn_set을 구축하거나하지 않고, 궁금 해서요, defaultdict은 아니다 여기에 필요한 :

new_dict = {k:v for k, v in word_set.items() if v > value} 

를이 반복자를 반환 당신이 word_set.iteritems()를 사용해야합니다 py2.x에.

2

dict 인과 관계를 사용하는 방법을 배우면이 모든 다른 필터에 대해 별도의 기능을 수행 할 필요가 없습니다.

# Python 2.7+ 
{w: v for w, v in word_set.items() if v > value} 
{w: v for w, v in word_set.items() if w in args} 

# Python 2.6 and earlier 
dict((w, v) for w, v in word_set.iteritems() if v > value) 
dict((w, v) for w, v in word_set.iteritems() if w in args) 
: 예를 들어, reduceValreduceWord로 대체 될 수있다