2017-10-12 176 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')]