/ / Jak dowiedzieć się, czy klucz istnieje na wielowymiarowej liście w Pythonie - python, list, python-2.7

Jak sprawdzić, czy istnieje klucz w wielowymiarowej liście w Pythonie - python, list, python-2.7

Mam zaludnioną listę wypełnioną w ten sposób

record.append([key, value1, count1, value2, count2])

ale gdy używam wbudowanej funkcji, to nie działa.

if k in record

jaki jest najbardziej elegancki sposób wyszukiwania wielowymiarowej listy w Pythonie?

Odpowiedzi:

2 dla odpowiedzi № 1

Aby wyszukać klucz na liście, musisz przeszukać te wewnętrzne listy:

możesz użyć any tutaj:

any(key in x for x in record)

lub jeśli klucz jest zawsze w pierwszym indeksie, to również zadziała:

any(key == x[0] for x in record)

albo użyj list.extend aby dodać poszczególne pozycje do listy (zamiast całej listy), wtedy Twoja metoda będzie działać dobrze.


1 dla odpowiedzi nr 2
import operator
if key in map(operator.itemgetter(0),records): ...

jest to metoda, którą prawdopodobnie użyłbym, lub bardziej wydajna metoda, która spowoduje zwarcie bez powtarzania całej listy (według komentarza Ashwiniego)

import operator,itertools
if key in itertools.imap(operator.itemgetter(0),records): ...

ale tak naprawdę myślę, co naprawdę chcesz

def findRecord(key,records):
for r in records:
if r[0] == key:
return r

print findRecord("some_key",records)