Python 从字典中切片数据
我有正确返回xyz坐标列表(或xyz坐标列表)的代码。我的问题是,我想直接访问它返回的列表中的单个数字,但一次只能访问整个列表。我的代码:Python 从字典中切片数据,python,dictionary,numpy,slice,Python,Dictionary,Numpy,Slice,我有正确返回xyz坐标列表(或xyz坐标列表)的代码。我的问题是,我想直接访问它返回的列表中的单个数字,但一次只能访问整个列表。我的代码: import numpy as np a = [([2, -2, 0.29]), ([-2, 0, 1.9]), ([2, 1, 2.35]), ([2, -3, 2.96])] b = [0,2,3] myZip= list(zip(a,b)) result={} for x in myZip: result.setdefault(x[1],[])
import numpy as np
a = [([2, -2, 0.29]), ([-2, 0, 1.9]), ([2, 1, 2.35]), ([2, -3, 2.96])]
b = [0,2,3]
myZip= list(zip(a,b))
result={}
for x in myZip:
result.setdefault(x[1],[]).append(x[0])
xyz=[]
for each_index in b:
xyz.append(result[each_index])
print(xyz)
xyz.clear()
将返回:
[[[2, -2, 0.29]]]
[[[-2, 0, 1.9]]]
[[[2, 1, 2.35]]]
我现在想把它分成X和Y,这样X=[2,-2,2]和Y=[-2,0,1]。我已经尝试过直接切片,但是我得到了一个关于切片是整数而不是元组的错误。我还尝试转换为numpy,然后使用np.hsplit。如何做到这一点?谢谢男生(或女生)
编辑
我意识到在这些情况下,它一次只能打印一个,但在我的现实世界示例中,有时它会返回([x,y,x],[x,y,z])。使用列表理解:
>>> X = [result[i][0][0] for i in b]
>>> Y = [result[i][0][1] for i in b]
>>> print X, Y
[2, -2, 2] [-2, 0, 1]
使用:
顺便说一下,你名单中的圆括号是多余的,所以我把它们去掉了
>>> a = [[2, -2, 0.29], [-2, 0, 1.9], [2, 1, 2.35], [2, -3, 2.96]]
>>> b = [0,2,3]
>>> x, y, z = zip(*(a[i] for i in b))
>>> x
(2, 2, 2)
>>> y
(-2, 1, -3)
>>> z
(0.29, 2.35, 2.96)