Python, как отсортировать словарь по ключам, когда ключи представляют собой числа с плавающей запятой в научном формате? - PullRequest
2 голосов
/ 07 декабря 2010

Мне нужно отсортировать словарь Python по ключам, когда ключи представляют собой числа с плавающей запятой в научном формате.

Пример:

a={'1.12e+3':1,'1.10e+3':5,'1.19e+3':7,...}

Мне нужно сохранить ссылки ключ-значение без изменений.
Какой самый простой способ сделать это?

Ответы [ 2 ]

7 голосов
/ 07 декабря 2010

Возможно, просто преобразовав обратно в число:

sorted(a, key = lambda x: float(x))
['1.10e+3', '1.12e+3', '1.19e+3']

Это просто даст вам отсортированную копию ключей.Я не уверен, что вы можете написать в словарь и изменить его список ключей (список, возвращаемый keys() в словаре) на месте.Звучит немного зла.

3 голосов
/ 07 декабря 2010

Вы можете отсортировать пары (key, value) по значению с плавающей запятой

a={'1.12e+3':1,'1.10e+3':5,'1.19e+3':7,...}
print sorted(a.iteritems(), key=lambda (x,y):float(x))
# [('1.10e+3', 5), ('1.12e+3', 1), ('1.19e+3', 7)]

Полагаю, вы в любом случае захотите с плавающей точкой, так что вы можете просто конвертировать их сразу:

print sorted((float(x),y) for x,y in a.iteritems())
# [(1100.0, 5), (1120.0, 1), (1190.0, 7)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...