【发布时间】:2017-02-28 15:42:38
【问题描述】:
鉴于这个字典:
d={0: [(78.65, 89.86),
(28.0, 23.0),
(63.43, 9.29),
(66.47, 55.47),
(68.0, 4.5),
(69.5, 59.0),
(86.26, 1.65),
(84.2, 56.2),
(88.0, 18.53),
(111.0, 40.0)], ...}
如何创建两个列表,以便y 获取每个元组的第一个元素,x 获取第二个,对于 d 中的每个键?
在上面的示例中(仅显示key=0),这将是:
y=[78.65, 28.0, 63.43, 66.47, 68.0, 69.5, 86.26, 84.2, 88.0, 111.0]
x=[89.86, 23.0, 9.29, 55.47, 4.5, 59.0, 1.65, 56.2, 18.53, 40.0]
我的尝试是错误的(我只尝试了x 列表):
for j,v in enumerate(d.values()):
x=[v[i[1]] for v in d.values() for i in v]
因为:
TypeError Traceback (most recent call last)
<ipython-input-97-bdac6878fe6c> in <module>()
----> 1 x=[v[i[1]] for v in d.values() for i in v]
TypeError: list indices must be integers, not numpy.float64
这是怎么回事?
【问题讨论】:
-
我不清楚如果字典包含两个元素会发生什么...
-
您的意思是另一个带有
key=1的元组列表?在那种情况下,不多,因为我想在 for 循环中提取这两个列表,以便在每次迭代时它们都是不同的。这能回答你的问题吗? -
x=[i[1] for v in d.values() for i in v]应该适用于您的 sn-p
标签: python list dictionary tuples