Найти - Пользователи
Полная версия: Поиск во вложенных списках
Начало » Python для новичков » Поиск во вложенных списках
1 2
zeb
доброго времени суток
может быть я пытаюсь применить какие то вещи которые тут инародны но вот столкнулся с такой непоняткой
d={} #словарь
d[1]=[] #в словаре храниться список
d[1].append([2,3,4])
а теперь задача
как мне узнать что в d внутри входит цифра 3.
т.е если проверять
3 in d[1]:
то не получиться ибо в d
лежит список списков т.е в нем []
как добравться вглубь?
regall
Правильно выбранные структуры данных - половина решения задачи
© Никлаус Вирт.

Делайте не
d[1].append([2,3,4])
а
d[1] += [2,3,4]
igor.kaist
regall
d +=
да блин, к своему стыду, я никогда так не делал, проходился по привычке как дурак циклом :(
py.user.next
>>> la = []
>>> la.extend((1, 2, 3))
>>> la
[1, 2, 3]
>>> la.extend((1, 2, 3))
>>> la
[1, 2, 3, 1, 2, 3]
>>>
по timeit получается медленнее, чем +=

zeb
как добравться вглубь?
3 in d[1][0]
zeb
народ ну это же не ответ на мой вопрос.
поясню у меня есть граф. он сохранен в виде словаря где ключ это вершина а в нем содержиться список каждый член которого класс. и мне надо добраться до поля класса.
т.е я понял что вы предложили но вопрос был все же иной. ну или я не так сформулировал.
alexx11
zeb d?
Ed
Если потенциально там несколько списков, то проверять только один мало будет.
Наверное лучше так:
[1 for i in d[1] if 3 in i]
py.user.next
zeb
а в нем содержиться список каждый член которого класс. и мне надо добраться до поля класса.
а может объект ?
потому что "d.append()“ - это добавление в список объекта
тебе посоветовали, что если у тебя такая ситуация, то храни в виде ”{1: , 2: }“
если же у тебя там не просто цифры ”{1: [, , 3], 2: }", то это делается через d
а проверка на наличие - через "'a' in d"

все эти пробелы от незнания базовых типов
zeb
хитро т.е не делать класс инкапсулирующий данные об обьекте а хранить это в трехмерном списке. в принципе тоже способ.
однако на вопрос поставленный в топике так ни кто и не ответил. вопрос был как добраться до переменной уже лежащей в некой структуре а не в том как изменить эту структуру что бы можно было добраться.
doza_and
чтото я совсем не пойму почему вас не устраивает то что предлагают
class Tv:
def __init__(self):
self.a=1
d={} #словарь
d[1]=[] #в словаре храниться список
d[1].append(Tv())
print d[1][0].a
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB