Как добавить элемент к элементу в списках? - PullRequest
0 голосов
/ 23 декабря 2018

Я хочу построить список, содержащий некоторые слова, используя списочные выражения Я пытался использовать .update(), но получаю None.

Например

  >>> data = [ {}.update({'demo': i}) for i in range(5) } ]
  >>> data
  [None, None, None, None, None]

Пока я хочу:

  [ {'demo': 0}, {'demo': 1}, {'demo': 2}, {'demo': 3}, {'demo': 4}]

Есть идеи?thx.

Что касается путаницы coldspeed , приведенный выше пример является простой демонстрацией, что если {} не пустой каталог, а произвольный каталог?Если нам просто нужно обновить каждый элемент, который вписывается в список, используя списочные выражения, я думаю, что, возможно, мы не сможем избежать update.Вот почему я придумал .update().

Извините за плохую информацию в первый раз.

1 Ответ

0 голосов
/ 23 декабря 2018

Как сказал coldspeed в комментарии к вашему вопросу:

Что не так с [{'demo': i} for i in range(5) } ]?

Проблема с кодом, который у вас естьпоказано:

update - операция на месте, поэтому она возвращает None и обновляет словарь на месте до того, как его ссылка будет потеряна, а сборщик мусора будет.

Однако давайте дадим вам преимущество сомнения и предположим, что ваша реальная проблема немного сложнее.Решение состоит в том, чтобы определить небольшую функцию:

def f(i):
    result = {}
    result.update({'demo': i})
    return result

data = [ f(i) for i in range(5) } ]

Очевидно, что вы сделаете это, только если у вас есть реальная потребность в дополнительной сложности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...