У меня есть список orderdicts. И я хотел бы объединить их все вместе, а затем отсортировать по атрибуту плода в каждом из них. Я должен был комбинировать и сортировать их с использованием defaultdict через код ниже.Как продлить OrderedDict с поведением по умолчанию
super_dict_apple = defaultdict(list)
super_dict_orange = defaultdict(list)
super_dict_no_fruit = defaultdict(list)
for d in dict:
if 'fruit' not in d:
for k, v in d.iteritems():
super_dict_no_fruit[k].append(v)
elif d['fruit'] == 'Apple':
for k, v in d.iteritems():
super_dict_apple[k].append(v)
elif d['fruit'] == 'orange':
for k, v in d.iteritems():
super_dict_orange[k].append(v)
С этим я получаю один ключ и все связанные значения, но я теряю первоначальный заказ. Поэтому я попытался сделать это с помощью orderDict, но я не могу заставить его работать, ниже - то, что я пробовал.
from collections import OrderedDict
order_dict_no_fruit = OrderedDict()
order_dict_apple = OrderedDict()
order_dict_orange = OrderedDict()
for d in dict:
if 'fruit' not in d:
for k, v in d.iteritems():
order_dict_no_fruit[k].append(v)
elif d['fruit'] == 'Apple':
for k, v in d.iteritems():
order_dict_apple[k].append(v)
elif d['fruit'] == 'orange':
for k, v in d.iteritems():
order_dict_orange[k].append(v)
Моя главная цель состоит в том, чтобы сохранить первоначальный порядок словарей, но объединить их в три различных orderDicts на основе фруктовых ключей.
** Как это не работает **. Вы должны всегда быть в состоянии описать это подробно. –
Пожалуйста, покажите пример того, что вы получаете, и еще один пример того, что вы ожидаете. – Soviut
Вероятно, это не работает, потому что 'OrderedDict' не является' defaultdict', поэтому при доступе он автоматически не устанавливает значение по умолчанию. Если только существует метод 'dict', который * setdefault * ... DOTDOT –