我想獲得的所有值(除了對應於特定密鑰)通過這樣做,從類型的字典列表:訂購值時提取的Python字典列出
fv = [[v for (k,v) in d.iteritems() if k is not 'xKey'] for d in someDict]
其中someDict
是這樣的:
[{xKey:0.1,yKey:0.2,zKey:0.3},{yKey:0.9,xKey:0.7,zKey:0.4}...]
我知道一個字典沒有固有的順序。但是我的列表fv需要按順序具有值。我正在考慮對關鍵字進行排序,然後按照我剛纔的做法。但是,這是保證工作?
我知道使用OrderedDict
是一個選項,但它似乎與dict相比性能較差,這對我來說是一個問題,因爲我的字典通常會有大量的數據。
更新:當我說我需要按順序排列的值時,他們並不需要排序。我的意思是我需要能夠每次以固定的確定性順序檢索值列表。在上面的例子中,我總是想得到[[0.2,0.3],[0.9,0.4]],儘管它本身可能不是一個排序順序。排序會強制執行一個確定性的順序。我真正關心的是如何保持最終列表中的值的位置。 yKey的值必須始終是每個列表中的第一個值,zKey的值必須始終是每個列表中的第二個值,依此類推,即使ykey,zkey等可能在字典中以任意順序排列。
我會使用'OrderedDict',然後測量速度並查看性能是否有問題。在感興趣的領域沒有重要經驗的情況下預測績效往往非常困難。 – 2012-02-09 21:44:04
我同意,儘管字典會隨着時間的推移而逐漸變大,而且我明白我們也許不應該修復它,如果它沒有被破壞,但我不想在一週內重新訪問它。 – atlantis 2012-02-09 21:50:08
「一個固定的確定性順序......它本身可能不是一個排序順序」你不能有一個不確定但確定性的順序。這只是要求下一個版本具有與確定性順序不同的未指定問題。請做一個有限的,明確的,有效的陳述。一個希望的功能不會奏效。 – 2012-02-09 22:44:43