python
[python] dictionary key 이름 / 순서 바꾸기
thisisw
2023. 3. 1. 14:32
1. dictionary key 이름 변경
: pop을 이용해 기존의 value를 꺼내서 새로운 key name에 할당
def change_key(x, name):
'''
x : 기존의 dictionary
name : {before key : after key}
'''
for bf, af in name.items():
if bf in x.keys():
x[af] = x.pop(bf)
return x
# 예제
x = {'한국어':'안녕하세요','영어':'hello', '중국어':'ni-hao'}
name={'한국어':'Korean','영어':'English'}
change_key(x)
# {'중국어': 'ni-hao', 'Korean': '안녕하세요', 'English': 'hello'}
2. dictionary의 key, value 순서 변경
1) 오름차순 / 내림차순 정렬
x = {'1':'January','2':'February', '3':'March'}
# key기준, 오름차순 정렬
sorted(x.items())
sorted(x.items(), key=lambda x: x[0])
# [('1', 'January'), ('2', 'February'), ('3', 'March')]
# key기준, 내림차순 정렬
sorted(x.items(), key=lambda x: x[0], reverse=True)
# [('2', 'February'), ('1', 'January'), ('3', 'March')]
# value기준, 내림차순 정렬
sorted(x.items(), key=lambda x: x[1], reverse=True)
# [('3', 'March'), ('1', 'January'), ('2', 'February')]
2) 내가 지정한 순서대로 정렬
: key_order list에 내가 원하는 key의 순서를 지정해두고 해당 값의 index를 이용해 정렬
x = {'1':'January','2':'February', '3':'March'}
key_order = ['2','3','1']
# 내가 원하는 기준으로 정렬
dict(sorted(x.items(), key=lambda k: key_order.index(k[0])))
# {'2': 'February', '3': 'March', '1': 'January'}