从多维数组中选择一个数组

时间:2012-06-04 12:56:39

标签: python list

在以下数组中,我想在已知id时从数组a中选择一个子数组

a=[['id123','ddf',1],['id456','ddf',1],['id789','ddf',1]]

我知道id,即id456,基于此我如何在不使用任何循环的情况下从['id456','ddf',1]中选择值a

5 个答案:

答案 0 :(得分:2)

>>> a = [['id123','ddf',1],['id456','ddf',1],['id789','ddf',1]]
>>> next(x for x in a if x[0] == 'id456')
['id456', 'ddf', 1]
但是,我会建议使用字典。

答案 1 :(得分:1)

我认为这应该有用......

filter(lambda x:x[0]=='id456',a)[0]

但在这种情况下,字典不是更好的数据结构吗?

答案 2 :(得分:0)

字典结构可以更好地工作。

b = {'id123': ['ddf', 1], 'id456': ['dff', 1], 'id789': ['ddf', 1]}
print b['id123']

答案 3 :(得分:0)

如果列表已排序,您可以使用bisect模块:

>>> i = bisect.bisect_left(a, ['id456'])
>>> if i < len(a) and a[i][0]=='id456':
...     print a[i]
...
['id456', 'ddf', 1]

答案 4 :(得分:0)

您可以使用numpy.where()来执行此操作:

a = numpy.array(a)

row = numpy.where(a == 'id456')[0]

sub_array = a[row,:]

这将检查具有所需id的元素并返回其索引。您可以使用这些索引从原始数组中获取切片,如示例所示。

此代码仅在给定ID的单行时有效,但可以进行调整。

希望这有帮助。