반응형
사전 이해에서 if / else를 사용하는 방법?
python2.7 +에는 다음과 같은 것을 만드는 방법이 있습니다.
{ something_if_true if condition else something_if_false for key, value in dict_.items() }
'만약'으로 무엇이든 만들 수 있다는 걸 알아
{ something_if_true for key, value in dict_.items() if condition}
이미 가지고 있습니다 : A if test else B
유효한 파이썬 표현식입니다. dict comprehension의 유일한 문제는 dict comprehension에서 표현식의 위치에 콜론으로 구분 된 두 개의 표현식이 있어야한다는 것입니다.
{ (some_key if condition else default_key):(something_if_true if condition
else something_if_false) for key, value in dict_.items() }
마지막 if
절은 조건식과는 다른 필터 역할을합니다.
@Marcin의 답변 은 모든 것을 다루지 만 누군가가 실제 예제를보고 싶다면 아래에 두 가지를 추가합니다.
다음과 같은 세트 사전이 있다고 가정 해 보겠습니다.
d = {'key1': {'a', 'b', 'c'}, 'key2': {'foo', 'bar'}, 'key3': {'so', 'sad'}}
문자열 'a'
이 값에 포함되어 있는지 여부를 나타내는 키가있는 새 사전을 만들려면 다음을 사용할 수 있습니다.
dout = {"a_in_values_of_{}".format(k) if 'a' in v else "a_not_in_values_of_{}".format(k): v for k, v in d.items()}
어느 양보
{'a_in_values_of_key1': {'a', 'b', 'c'},
'a_not_in_values_of_key2': {'bar', 'foo'},
'a_not_in_values_of_key3': {'sad', 'so'}}
이제 다음과 같은 두 개의 사전이 있다고 가정 해 보겠습니다.
d1 = {'bad_key1': {'a', 'b', 'c'}, 'bad_key2': {'foo', 'bar'}, 'bad_key3': {'so', 'sad'}}
d2 = {'good_key1': {'foo', 'bar', 'xyz'}, 'good_key2': {'a', 'b', 'c'}}
각 값이 동일한 경우 d1
키로 키를 교체하려면 d2
다음을 수행 할 수 있습니다.
# here we assume that the values in d2 are unique
# Python 2
dout2 = {d2.keys()[d2.values().index(v1)] if v1 in d2.values() else k1: v1 for k1, v1 in d1.items()}
# Python 3
dout2 = {list(d2.keys())[list(d2.values()).index(v1)] if v1 in d2.values() else k1: v1 for k1, v1 in d1.items()}
주는
{'bad_key2': {'bar', 'foo'},
'bad_key3': {'sad', 'so'},
'good_key2': {'a', 'b', 'c'}}
참고 URL : https://stackoverflow.com/questions/9442724/how-to-use-if-else-in-a-dictionary-comprehension
반응형
'developer tip' 카테고리의 다른 글
파이썬에서 잡힌 예외의 이름을 얻는 방법? (0) | 2020.08.19 |
---|---|
lsof 생존 가이드 (0) | 2020.08.19 |
(i == -i && i! = 0)에 대한 i 값은 Java에서 true를 반환합니다. (0) | 2020.08.19 |
Android APK 파일의 내용을 보는 방법은 무엇입니까? (0) | 2020.08.19 |
C ++에서 int를 Infinity로 설정 (0) | 2020.08.19 |