사전 값을 필터링하고 싶습니다.사전 필터 값
d1 = {'a': 0, 'b': 0, 'c': 8, 'd': 7}
무엇을해야할까요?
d={}
for k,v in d1.items():
if v>0:
d[k]=v
필자는 동일한 재 활성화 필터를 사용할 수 없습니다.
filter(..)
이렇게하려면 어떤 멋진 방법이 있습니까?
사전 값을 필터링하고 싶습니다.사전 필터 값
d1 = {'a': 0, 'b': 0, 'c': 8, 'd': 7}
무엇을해야할까요?
d={}
for k,v in d1.items():
if v>0:
d[k]=v
필자는 동일한 재 활성화 필터를 사용할 수 없습니다.
filter(..)
이렇게하려면 어떤 멋진 방법이 있습니까?
당신은 당신이
>>> {key: value for key, value in d1.items() if value > 0}
{'c': 8, 'd': 7}
주처럼 dict.items()
을 사용할 수 있습니다이
>>> {key: d1[key] for key in d1 if d1[key] > 0}
{'c': 8, 'd': 7}
처럼 필터링 된 값으로 사전을 만들려면 사전 이해를 사용할 수 있습니다 dict.iteritems()
를 사용하면 더 많은 메모리 될 것입니다 파이썬 2.7에서 효율적으로 사용할 수 있습니다. dict.items()
은 모든 키 - 값 쌍을 가진 튜플 목록을 생성합니다. 당신의 의도는 단지 0
을있는 값을 제거하는 경우
, 당신은 당신의 요구 사항을 fullfill에이
>>> {key: value for key, value in d1.items() if value}
{'c': 8, 'd': 7}
필터 기능 방법처럼이 단축 될 수 있습니다.
def f(x):
return x[1]>0
d1 = {'a': 0, 'b': 0, 'c': 8, 'd': 7}
filter(f, d1.items())
아니면 람다 함수를 사용하여, 다음과 같이, 그것은 간단하다 :
filter(lambda x:x[1]>0, d1.items())
감사합니다! 당신의 대답을 위해. 나는 그것을 유효한 답으로 표시 할 수있을 때까지 약간의 시간을 기다려야한다.) – user3378649