2012-11-08 44 views
0

如果我有d = {"key": (5,4,"val1","val2",2)}我怎麼會搶VAL1出來的元組,並通過自己把它變成一個列表?的Python:字典值轉換到一個列表

+0

你想使用多個密鑰做到這一點(與每個值相同的元組的格式),或只是一把鑰匙? – ezod

+1

你應該真的爲某個大元組使用某種數據結構。 (就像['namedtuple'](http://docs.python.org/2/library/collections.html#collections.namedtuple)。)複雜的ad-hoc元組不應該真的被使用,除非他們分開在他們創建後不久。 (即從一個函數返回多個值的時候,還是在列表改寫(munging)代碼,使用推導/'拉鍊()'/等中間結果) – millimoose

+2

我不明白的downvotes的原因....哦哦這是一個有效的問題和downvoters至少可以解釋他們的行爲...歡迎來到SO(使用operator.itemgetter) –

回答

6

[d['key'][2]]應該做的伎倆......

其分解:

  • d['key'] retieves從字典
  • [2]下標列表,並獲得所需的項目出來的元組
  • 外支架將最終對象放入列表中
+0

非常感謝! –

1

你的意思只是:

list(d['key'][2]) 
+0

這會給他'['v','a','l','1']',而不是'['val1']',我猜他會發現令人驚訝的......但也許這就是他想。這很難說。 – abarnert

+0

@abanert:我以爲OP想要'['v','a','l','1']'。重讀這個問題時,你的解釋似乎更有意義 –

0

假設你想要的值,在該位置在字典中的所有鍵列表:

[value[2] for value in d.values()] 
0
from operator import itemgetter 

values = map(itemgetter(2), d.values()) 

應該是大的最快方法dictioanries。

即使我們的BDFL不喜歡那些地圖,過濾器,拉姆達構造非常;-)