我有這樣的:Python列表輸入搜索
[[(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都有
我有這樣的:Python列表輸入搜索
[[(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都有
您必須先遍歷列表,然後爲每個獲取的列表遍歷它以獲取元組。
>>> 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
你需要一個嵌套的循環:
def find_index (data, key):
for i, d in enumerate (data):
for t in d:
if t[1] == key:
return i
這將返回(默認情況下)沒有找到密鑰時無。
不是很Python的做'因爲我在範圍內( LEN(數據))'。而是使用'enumerate()'。 –
我不知道,謝謝。我現在改了它。它確實更好。 –
你可以使用一個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}
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
你並不總是在尋找'a',所以我們讓它成爲一個適當的功能。 –
@tvdien ..沒有。謝謝:) –
除此之外現在有一個錯誤。 ;) –