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'}