我有一個orderdicts列表。我想將它們全部結合在一起,然後按照它們中的水果屬性對它們進行排序。我一直在使用defaultdict通過下面的代碼進行組合和排序。如何使用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 –