我有一组OrderedDict
对象列表。 我想将它们全部组合在一起,然后按其中每个对象中的水果属性进行排序。我一直在尝试使用下面的代码使用defaultdict
组合和排序它们:
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)
使用该方法,我可以获取一个键及其所有相关的值,但是我会失去原本的顺序。因此我尝试使用OrderedDict
来解决问题,但是我无法使其正常工作。以下是我的尝试:
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)
我的主要目标是保持字典的原始顺序,但根据水果键将它们合并为三个不同的OrderedDict
对象。
OrderedDict
不是defaultdict
,所以在访问时它不会自动设置默认值,导致代码无法正常工作。如果只有一个setdefault方法的话,那该多好啊...DOTDOT - juanpa.arrivillaga