여태까지 dict에서 특정 key들을 제외한 나머지 key들의 값을 뽑아낼 때 이렇게 썼었는데
# d : key들을 추출할 dict
# s : 제외할 key들의 set
keys = (key for key in d.keys() if not key in s)
dict_keys는 set operator의 operand가 될 수 있다는 사실을 이제 알음
그래서 밑처럼 써도 됨
d나 s의 key들이 겁나게 많으면 key 하나 뽑을 때마다 in 검사하는 것보다 처음부터 뽑아야 할 key들을 구해놓는게 빠를 듯
keys = (key for key in d.keys() - s)
생각해보니 dict의 key들과 set의 item들 사이에는 hashable하고 unique해야 한다는 공통점이 있으니
상호 연산이 가능해야 아다리가 맞는 것 같음 ㅋㅋ
dict_keys와 달리 dict_values는 이런 게 불가능한데
dict의 value들은 hashable하거나 unique할 필요가 없으니 당연한 것 같고
파이썬 쓴지 몇년 지났는데 이제야 알게되다니 ㅠㅠ
댓글 0