반응형

출처

https://stackoverflow.com/questions/11277432/how-can-i-remove-a-key-from-a-python-dictionary

Python dictionary에서 키를 어떻게 없앨 수 있을까요?

dictionary에서 키를 삭제할 때 저는 다음을 사용하였습니다.

if 'key' in my_dict:
    del my_dict['key']

이를 한 줄로 할 수 있는 방법이 있습니까?


16 개의 답변 중 1 개의 답변

dictionary에 키가 있는지 상관없이 삭제하려면, dict.pop()에서 2개의 인자를 사용합니다.

my_dict.pop('key', None)

이는 key가 dictionary에 존재한다면 my_dict[key]를 리턴할 것이며 그렇지 않으면 None을 리턴할 것입니다. 두 번째 파라미터가 특정되지 않았고 (예 my_dict.pop('key')) key가 존재하지 않으면 KeyError 오류가 발생합니다.

존재하는지 보장되는 키를 지우기 위해 다음을 사용할 수 있습니다.

del my_dict['key']

만약 dictionary에 키가 없으면 KeyError 오류가 발생합니다.

반응형
반응형

출처 : http://stackoverflow.com/questions/9001509/how-can-i-sort-a-dictionary-by-key

키로 dictionary를 어떻게 정렬할 수 있습니까?

{2:3, 1:89, 4:5, 3:3}{1:89, 2:3, 3:3, 4:5}로 만드는 좋은 방법에는 무엇이 있습니까? 저는 몇 개의 글을 검사했는데 그들 모두 튜플을 리턴하는 "sorted" 연산자를 사용하였습니다.


30 개의 답변 중 1개의 답변만 추려냄.

표준 파이썬 dictionary들은 정렬되지 않습니다. (key, value) 쌍으로 정렬할 지라도 순서를 보전하면서 dict의 내용을 보관할 수는 없습니다.

가장 쉬운 방법은 값(element)이 추가되는 순서를 기억하는 OrderedDict를 사용하는 것입니다.

In [1]: import collections
In [2]: d = {2:3, 1:89, 4:5, 3:0}
In [3]: od = collections.OrderedDict(sorted(d.items()))
In [4]: od
Out[4]: OrderedDict([(1, 89), (2, 3), (3, 0), (4, 5)])

od가 출력하는 방법은 신경쓰지 않아도 됩니다. 예상한대로 작동합니다.

In [11]: od[1]
Out[11]: 89

In [12]: od[3]
Out[12]: 0

In [13]: for k, v in od.iteritems(): print k, v
   ....: 
1 89
2 3
3 0
4 5

Python 3

Python3 사용자는 .iteritems() 대신에 .items()을 사용해야 합니다.

In [13]: for k, v in od.items(): print(k, v)
   ....: 
1 89
2 3
3 0
4 5
반응형

+ Recent posts