我有这个:
[[(1, 'a')], [(2, 'b'), (2, 'c')], [(3, 'd'), (3, 'e')]]
我想输入搜索/ b / c / d / e并输出这封信的索引。
在搜索a -> index=0
,b and c -> index=1
,d and e -> index=2
如何在Python 3.x
上实现这一点答案 0 :(得分:3)
您可以使用dict comprehension进行从字母到索引的映射:
data = [[(1, 'a')], [(2, 'b'), (2, 'c')], [(3, 'd'), (3, 'e')]]
mapping = {key:index for index, items in enumerate(data) for num, key in items}
print(mapping)
产量
{'a': 0, 'c': 1, 'b': 1, 'e': 2, 'd': 2}
答案 1 :(得分:2)
你需要一个嵌套循环:
def find_index (data, key):
for i, d in enumerate (data):
for t in d:
if t[1] == key:
return i
当找不到密钥时,这将返回(默认情况下)无。
答案 2 :(得分:2)
您必须首先遍历列表,然后对于获得的每个列表,迭代它以获取元组。
>>> my_list = [[(1, 'a')], [(2, 'b'), (2, 'c')], [(3, 'd'), (3, 'e')]]
>>>
>>> def search(val):
for index, inner_list in enumerate(my_list):
for nested_tuple in inner_list:
if val in nested_tuple:
return index
>>> search('a')
0
>>> search('c')
1
>>> search('e')
2
答案 3 :(得分:0)
python 3.2
lis= [[(1, 'a')], [(2, 'b'), (2, 'c')], [(3, 'd'), (3, 'e')]]
# method 1. list comprehension
>>> [i for i,v in enumerate(lis)for g in v if "a" in g]
# method 2. loop
def search(x):
for i,v in enumerate(lis):
for k in v:
if x in k: return i