私はこれを持っています:
[[(1, 'a')], [(2, 'b'), (2, 'c')], [(3, 'd'), (3, 'e')]]
a/b/c/d/e を検索する入力を行い、この文字のインデックスを出力したいと思います。
たとえばa -> index=0
、 、 b and c -> index=1
、 を検索する場合d and e -> index=2
Python 3.xでこれがどのように可能ですか
dict 内包表記を使用して、文字からインデックスへのマッピングを作成できます。
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}
ネストされたループが必要です。
def find_index (data, key):
for i, d in enumerate (data):
for t in d:
if t[1] == key:
return i
キーが見つからない場合、これは(デフォルトで)Noneを返します。
最初にリストを反復処理する必要があります。次に、取得したリストごとに、リストを反復処理してタプルを取得します。
>>> 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
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