Python dict按内部dict值排序

时间:2016-12-09 12:28:38

标签: python dictionary

所有。

我需要有关字典排序问题的帮助。

我有字典,我想按内部字典值排序。在我的情况下,我需要通过'排序'值

排序字典
{'MotoType': {'verbos_name': 'Тип', 'ordering': 6, 'filtering': False, 'value': 'Кросс'}, 'MarkaMoto': {'verbos_name': 'Марка', 'ordering': 1, 'filtering': True, 'value': 'Honda'}, 'Condition': {'verbos_name': 'Состояние', 'ordering': 5, 'filtering': False, 'value': 'Среднее'}, 'Color': {'verbos_name': 'Цвет', 'ordering': 99, 'filtering': False, 'value': 'Красный'}, 'probeg': {'verbos_name': 'Пробег км.', 'ordering': 6, 'filtering': False, 'value': '34500'}, 'CreatYear': {'verbos_name': 'Год выпуска', 'ordering': 6, 'filtering': True, 'value': '2010'}, 'ModelMoto': {'verbos_name': 'Модель', 'ordering': 2, 'filtering': True, 'value': 'VFR800FI'}}

2 个答案:

答案 0 :(得分:2)

字典在Python中是无序的。您可以使用OrderedDict,它可以保留排序。

startService(new Intent(this, MqttConnectionManagerService.class));

输出

from collections import OrderedDict

a = OrderedDict({'MotoType': {'verbos_name': 'Тип', 'ordering': 6, 'filtering': False, 'value': 'Кросс'},
     'MarkaMoto': {'verbos_name': 'Марка', 'ordering': 1, 'filtering': True, 'value': 'Honda'},
     'Condition': {'verbos_name': 'Состояние', 'ordering': 5, 'filtering': False, 'value': 'Среднее'},
     'Color': {'verbos_name': 'Цвет', 'ordering': 99, 'filtering': False, 'value': 'Красный'},
     'probeg': {'verbos_name': 'Пробег км.', 'ordering': 6, 'filtering': False, 'value': '34500'},
     'CreatYear': {'verbos_name': 'Год выпуска', 'ordering': 6, 'filtering': True, 'value': '2010'},
     'ModelMoto': {'verbos_name': 'Модель', 'ordering': 2, 'filtering': True, 'value': 'VFR800FI'}})

out = sorted(a.items(), key=lambda i: i[1]["value"])

print(out)

答案 1 :(得分:2)

对数据进行排序并使用OrderedDict保持顺序。

>>> a ={'MotoType': {'verbos_name': 'Тип', 'ordering': 6, 'filtering': False, 'value': 'Кросс'}, 'MarkaMoto': {'verbos_name': 'Марка', 'ordering': 1, 'filtering': True, 'value': 'Honda'}, 'Condition': {'verbos_name': 'Состояние', 'ordering': 5, 'filtering': False, 'value': 'Среднее'}, 'Color': {'verbos_name': 'Цвет', 'ordering': 99, 'filtering': False, 'value': 'Красный'}, 'probeg': {'verbos_name': 'Пробег км.', 'ordering': 6, 'filtering': False, 'value': '34500'}, 'CreatYear': {'verbos_name': 'Год выпуска', 'ordering': 6, 'filtering': True, 'value': '2010'}, 'ModelMoto': {'verbos_name': 'Модель', 'ordering': 2, 'filtering': True, 'value': 'VFR800FI'}}
>>> from collections import OrderedDict
>>> OrderedDict(sorted(a.items(), key=lambda t:t[1]['ordering']))
OrderedDict([('MarkaMoto', {'value': 'Honda', 'filtering': True, 'verbos_name': 'Марка', 'ordering': 1}), ('ModelMoto', {'value': 'VFR800FI', 'filtering': True, 'verbos_name': 'Модель', 'ordering': 2}), ('Condition', {'value': 'Среднее', 'filtering': False, 'verbos_name': 'Состояние', 'ordering': 5}), ('probeg', {'value': '34500', 'filtering': False, 'verbos_name': 'Пробег км.', 'ordering': 6}), ('MotoType', {'value': 'Кросс', 'filtering': False, 'verbos_name': 'Тип', 'ordering': 6}), ('CreatYear', {'value': '2010', 'filtering': True, 'verbos_name': 'Год выпуска', 'ordering': 6}), ('Color', {'value': 'Красный', 'filtering': False, 'verbos_name': 'Цвет', 'ordering': 99})])
>>>