2015-10-22 4 views
1

Я ищу способ сортировки списка dicts для получения «естественного порядка сортировки». Я нашел модуль natsort, но apparantly я не использую его правильно, чтобы правильно отсортировать список словарей. Может ли кто-нибудь помочь найти мою ошибку?Сортировка списка словарей с natsort для получения естественного порядка сортировки

Вот мой код:

from operator import itemgetter 
import natsort 

# Example list an dict 
list = ['13h', '1h', '3h'] 
dict = [{'a': '13h', 'b': 3}, {'a': '1h', 'b': 1}, {'a': '3h', 'b': 0}] 

# Sort the list 
natsort.natsorted(list, key=lambda y: y.lower()) 

# Sort the dict 
# Later I also want to sort on several keys, therefore the itemgetter 
sorted(dic, key=itemgetter(*['a'])) 
+0

Вы пробовали - 'natsort.natsorted (dic, key = itemgetter (* ['a']))'? –

+0

№ Lol, он работает. Это означает, что у меня уже был ответ:/ – Joko

+0

Есть ли причина, по которой вы используете 'key = lambda y: y.lower()' на первом проходе? Похоже, ваши данные уже строчные. – SethMMorton

ответ

1

Вы можете заменить natsort.natsorted вместо sorted() в вашем коде, и он должен работать. Пример -

natsort.natsorted(dic, key=itemgetter(*['a'])) 

Это должен возвращать список словарей, в которых элементы сортируются на основе значения ключа 'a'.

 Смежные вопросы

  • Нет связанных вопросов^_^