[python] 사전에서 키 이름 변경

파이썬 사전에서 항목의 키를 변경하고 싶습니다.

이 작업을 수행하는 간단한 방법이 있습니까?



답변

2 단계로 쉽게 수행 할 수 있습니다.

dictionary[new_key] = dictionary[old_key]
del dictionary[old_key]

또는 1 단계에서 :

dictionary[new_key] = dictionary.pop(old_key)

이는 올릴 KeyError경우 dictionary[old_key]정의되지 않는다. 이 참고 합니다 삭제합니다 dictionary[old_key].

>>> dictionary = { 1: 'one', 2:'two', 3:'three' }
>>> dictionary['ONE'] = dictionary.pop(1)
>>> dictionary
{2: 'two', 3: 'three', 'ONE': 'one'}
>>> dictionary['ONE'] = dictionary.pop(1)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
KeyError: 1


답변

모든 키를 변경하려면 다음을 수행하십시오.

d = {'x':1, 'y':2, 'z':3}
d1 = {'x':'a', 'y':'b', 'z':'c'}

In [10]: dict((d1[key], value) for (key, value) in d.items())
Out[10]: {'a': 1, 'b': 2, 'c': 3}

단일 키를 변경하려는 경우 위의 제안 중 하나를 수행 할 수 있습니다.


답변

pop’n’fresh

>>>a = {1:2, 3:4}
>>>a[5] = a.pop(1)
>>>a
{3: 4, 5: 2}
>>> 


답변

파이썬 2.7 이상에서는 사전 이해를 사용할 수 있습니다. 이것은 DictReader를 사용하여 CSV를 읽는 동안 발생한 예제입니다. 사용자는 모든 열 이름에 ‘:’을 붙였습니다.

ori_dict = {'key1:' : 1, 'key2:' : 2, 'key3:' : 3}

키에서 후행 ‘:’을 제거하려면 다음을 수행하십시오.

corrected_dict = { k.replace(':', ''): v for k, v in ori_dict.items() }


답변

키는 사전이 값을 조회하는 데 사용하는 것이므로 실제로 변경할 수는 없습니다. 가장 가까운 작업은 이전 키와 관련된 값을 저장하고 삭제 한 다음 대체 키와 저장된 값으로 새 항목을 추가하는 것입니다. 다른 답변들 중 몇 가지는 이것이 달성 될 수있는 다른 방법들을 보여줍니다.


답변

복잡한 dict이 있으면 dict 내에 dict 또는 list가 있음을 의미합니다.

myDict = {1:"one",2:{3:"three",4:"four"}}
myDict[2][5] = myDict[2].pop(4)
print myDict

Output
{1: 'one', 2: {3: 'three', 5: 'four'}}


답변

이를 수행하는 직접적인 방법은 없지만 delete-then-assign 할 수 있습니다

d = {1:2,3:4}

d[newKey] = d[1]
del d[1]

또는 대량 키 변경을 수행하십시오.

d = dict((changeKey(k), v) for k, v in d.items())