我正在尝试获取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'
?
答案 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']
应该更适合你