2016-06-20 2 views
-1

У меня возникла проблема в сортировке словаря на основе значений ключей, которые изначально являются строками. Я ищу решение, которое использует SortedDict. Ниже я передал строки int, но сортировка кажется иррациональной.Сортировка SortedDictionary Требуется другой ключ из OrderedDict

#using Jenks' library: 
from sortedcontainers.sorteddict import SortedDict 

mydict = SortedDict(
     lambda k: int(k[0]), 
     { 
     '1': '#fe70ac', 
     '10': '#ff7400', 
     '11': '#b6a2d1', 
     '12': '#79bc3b', 
     '100': '#000000', 
     '101': '#000000', 
     '102': '#000000' 
     }) 

Возвращает

SortedDict_items(
[('11', '#b6a2d1'), 
('10', '#ff7400'), 
('12', '#79bc3b'), 
('1', '#fe70ac'), 
('102', '#000000'), 
('100', '#000000'), 
('101', '#000000').... 
+1

Можете ли вы отсортировать дикт позже, итерации по нему? – Bahrom

ответ

2

Это будет работать, если вы замените int(k[0]) с int(k), потому что в противном случае вы сортировкой ваш Dict на основе первой цифры ключа.

+1

Блестящий. Ключ не такой же, как для 'OrderedDict', где' OrderedDict (sorted (d.items(), key = lambda t: t [0])) 'и' KEY = 0', 'VALUE = 1'. – noumenal

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