2017-10-12 77 views
-1

必須將這樣的:如何字典鍵值對轉換爲元組

d = {"k1": ("v1"), "k2": ("v2"), "k3": ("v3")} 

這樣:

[('k1, v1'), ('k2, v2'), ('k2, v3')] 

我嘗試這樣做:

[(k, v) for k, v in d.items()] 

但得到這樣的:

[('k1', ('v1')), ('k2', ('v2')), ('k3', ('v3'))] 

關閉,但我不能有那些額外的括號。

+0

如果你是肯定的格式,只需使用(K,V [0]) – pazqo

+0

注意,'[(K,V)對K,V在d.items()]'應該只是' list(d.items())',如果被評估,它給了我'[('k2','v2'),('k3','v3'),('k1','v1')]''爲你提供的例子。請注意,你的錯誤輸出示例'[('k1',('v1')),('k2',('v2')),('k3',('v3'))]'實際上是評估到'[''k1','v1'),('k2','v2'),('k3','v3')]'。那麼,你有**嗎? –

+1

你確定你的字典不是'{「k1」:(「v1」,),「k2」:(「v2」,),「k3」:(「v3」,)}'?否則,這些值應該是字符串,而不是元組。 –

回答

0
d = {"k1": ("v1"), "k2": ("v2"), "k3": ("v3")} 
print [(k, v) for k, v in d.items()] 

已經返回

[('k3', 'v3'), ('k2', 'v2'), ('k1', 'v1')] 

(這是一樣的實際上做list(d.items()))現在


,如果你的字典實際上是

d = {"k1": ("v1",), "k2": ("v2",), "k3": ("v3",)} 

那麼這將解釋你的輸出。在這種情況下,你需要做的

print [(k, v[0]) for k, v in d.items()] 
0

在這裏你去:

>>> d = {"k1": ("v1"), "k2": ("v2"), "k3": ("v3")} 
>>> [(a,d[a]) for a in d] 
[('k3', 'v3'), ('k2', 'v2'), ('k1', 'v1')] 
+0

這只是一個間接的做'list(d.items())'的方法,OP已經在報告他們已經嘗試過了。 –

+0

Nop,'d [a]'不是一個列表(不像拆包'd.items()'),請參閱我的結果。 – Blusky

+0

你的代碼**完全等價於**。嘗試做'list(d.items()'。 –

0

只是指數串出來的元組的列表理解,即

[(k, v[0]) for k, v in d.items()] 

這給

[('k3', 'v'), ('k2', 'v'), ('k1', 'v')] 
1

你可以試試這個:

d = {"k1": ("v1"), "k2": ("v2"), "k3": ("v3")} 
new_data = list(d.items()) 

產量:

[('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')]