1

私はこれを持っています:

 [[(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でこれがどのように可能ですか

4

4 に答える 4

3

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}
于 2012-11-23T22:46:39.697 に答える
2

ネストされたループが必要です。

def find_index (data, key):
    for i, d in enumerate (data):
        for t in d:
            if t[1] == key:
                return i

キーが見つからない場合、これは(デフォルトで)Noneを返します。

于 2012-11-23T22:36:23.890 に答える
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
于 2012-11-23T22:37:11.873 に答える
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
于 2012-11-24T06:29:54.230 に答える