Python
python: sort a list of dictionaries by a value
taltal
2022. 12. 18. 19:00
728x90
반응형
list에 담긴 json 형태의 dictionary 들을 특정 value에 따라 정렬을 해야할 때가 있습니다.
python 내장함수인 operator를 활용하면 아주 용이하게 할 수 있습니다.
import operator
list_of_dict = [
{'id': 1, 'name': 'Kim', 'age':10},
{'id': 2, 'name': 'Ju', 'age':30},
{'id': 3, 'name': 'Jang', 'age':20},
]
list_of_dict.sort(key=operator.itemgetter('name'))
print(list_of_dict)
list_of_dict.sort(key=operator.itemgetter('age'))
print(list_of_dict)
list_of_dict.sort(key=operator.itemgetter('id'), reverse=True)
print(list_of_dict)
[{'id': 3, 'name': 'Jang', 'age': 20}, {'id': 2, 'name': 'Ju', 'age': 30}, {'id': 1, 'name': 'Kim', 'age': 10}]
[{'id': 1, 'name': 'Kim', 'age': 10}, {'id': 3, 'name': 'Jang', 'age': 20}, {'id': 2, 'name': 'Ju', 'age': 30}]
[{'id': 3, 'name': 'Jang', 'age': 20}, {'id': 2, 'name': 'Ju', 'age': 30}, {'id': 1, 'name': 'Kim', 'age': 10}]
* 주의
sort()의 경우 return 값이 별도로 없고 sort()한 list가 직접 정렬이 적용됩니다.
import operator
list_of_dict = [
{'id': 1, 'name': 'Kim', 'age':10},
{'id': 2, 'name': 'Ju', 'age':30},
{'id': 3, 'name': 'Jang', 'age':20},
]
new_list = list_of_dict.sort(key=operator.itemgetter('name'))
print(new_list)
print(list_of_dict)
None
[{'id': 3, 'name': 'Jang', 'age': 20}, {'id': 2, 'name': 'Ju', 'age': 30}, {'id': 1, 'name': 'Kim', 'age': 10}]
위와 같이 변수를 sort() 한 후 변수로 값을 주려고 하면 None이 됩니다.
728x90
반응형