I have a list of OrderedDict
objects. I would like to combine all of them together and then sort them by the fruit attribute in each of them. I have been trying to combine and sort them using defaultdict
using the code below:
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)
With this I get one key and all the associated values, but I lose the original order. So I tried to do it with an OrderedDict
, but I cannot get it to work. This is what I tried:
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)
My main goal is to keep the original order of the dictionaries but combine them into three different OrderedDict
objects based on the fruit keys.
OrderedDict
is not adefaultdict
so it doesn't automatically set a default value when accessing. If only there weredict
method that setdefault...DOTDOT – Ridotto