我有一本字典,看起來像這樣:排序字典值
myDict = {
'SER12346': {'serial_num': 'SER12346', 'site_location': 'North America'},
'ABC12345': {'serial_num': 'ABC12345', 'site_location': 'South America'},
'SER12345': {'serial_num': 'SER12345', 'site_location': 'North America'},
'SER12347': {'serial_num': 'SER12347', 'site_location': 'South America'},
'ABC12346': {'serial_num': 'ABC12346', 'site_location': 'Europe'}
}
我的目標是解決這字典由site_location
和每個子詞典的serial_num
。
使用代碼我在這個問題上找到 - Sort a dictionary of dictionaries python - 我能得到它的排序,但它並不完全是什麼我期待。
這是我的代碼:
import pprint
items = ((k, k2, v) for k in myDict for k2, v in myDict[k].items())
ordered = sorted(items, key=lambda x:x[-1], reverse=False)
pprint.pprint(ordered)
這是結果我得到:
[('ABC12346', 'site_location', 'Europe'),
('SER12345', 'site_location', 'North America'),
('SER12346', 'site_location', 'North America'),
('SER12347', 'site_location', 'South America'),
('ABC12345', 'site_location', 'South America'),
('ABC12346', 'serial_num': 'ABC12346'),
('SER12345', 'serial_num': 'SER12345'),
('SER12346', 'serial_num': 'SER12346'),
('SER12347', 'serial_num': 'SER12347'),
('ABC12345', 'serial_num': 'ABC12345')]
我期待更多的東西像這樣雖然:
{
'ABC12346': {'serial_num': 'ABC12346', 'site_location': 'Europe'}
'SER12345': {'serial_num': 'SER12345', 'site_location': 'North America'},
'SER12346': {'serial_num': 'SER12346', 'site_location': 'North America'},
'SER12347': {'serial_num': 'SER12347', 'site_location': 'South America'},
'ABC12345': {'serial_num': 'ABC12345', 'site_location': 'South America'},
}
實際的結果是分離序列號和站點位置。我想將它們放在排序的對象中。我怎樣才能做到這一點?
最後一個片段是不是有效的Python - 你不能在列表中的鍵。 – georg 2012-07-05 14:17:09
@ thg435,你是對的。這是缺乏轉變。這應該是一本字典,但我會很滿意那種以這種方式訂購的東西。元組或類似的列表可以和我在一起。 – Andy 2012-07-05 14:25:21
@Andy如果要排序的字典結構使用OrderedDict如下圖所示 – 2012-07-05 14:48:44