在元组的第一个索引中查找具有非独特值的元组列表的索引

时间:2015-05-13 22:43:51

标签: python list tuples

我正在尝试获取Python中2元组列表的索引,其中每个元组的0索引为'a'

list_of_tuples = [('a', 1), ('a', 2), ('a', 3)]

所以我使用下面的列表推导来试图找出返回的索引,对吗?

index_list = [x for x, y in enumerate(list_of_tuples) if x[0] == 'a']

出现以下错误:

TypeError                                 Traceback (most recent call last)
<ipython-input-22-5d47328b7d9a> in <module>()
----> 1 index_list = [x for x, y in enumerate(list_of_tuples) if x[0] ==     'a']

TypeError: 'int' object is not subscriptable

如何找出与搜索元组列表相关联的索引,以使第0个索引中的值等于'a'

4 个答案:

答案 0 :(得分:1)

使用值y比较索引x

list_of_tuples = [('a', 1), ('a', 2), ('a', 3)]
index_list = [x for x, y in enumerate(list_of_tuples) if y[0] == 'a']

现在index_list[0, 1, 2]

答案 1 :(得分:1)

std::make_unique是索引。您应该访问x的第一个元素。 y -> y[0]是列表中的每个元组。你也可以解压缩:

y

如果您list_of_tuples = [('a', 1), ('a', 2), ('a', 3)] index_list = [ind for ind, (a, _) in enumerate(list_of_tuples) if a == 'a'] print(index_list) [0, 1, 2] ,您可以看到第一个元素是索引,第二个元素是元组:

print(list(enumerate(list_of_tuples)))

因此,您尝试使用[(0, ('a', 1)), (1, ('a', 2)), (2, ('a', 3))] 索引0 -> 0[0]

答案 2 :(得分:1)

首先,我建议您验证数据。

list_of_tuples = [('a', 1), ('a', 2), ('a', 3)]
print list(enumerate(list_of_tuples))
# [(0, ('a', 1)), (1, ('a', 2)), (2, ('a', 3))]
    ^   ^-----^
    x     y

当您了解如何解压缩以使用数据时,它很容易实现。

index_list = [x for x, y in enumerate(list_of_tuples) if y[0] == 'a']
print index_list

答案 3 :(得分:0)

for x,y in enumerate(my_tuples):
    print x,"=x"
    print y,"=y"

你应该立即看到x[0] == 'a'

的问题

我相信

index_list = [x for x, y in enumerate(list_of_tuples) if y[0] == 'a']

应该更适合你