Python эквивалент PHP foreach []? - PullRequest
1 голос
/ 10 февраля 2010

Я извлекаю строки из базы данных и хочу заполнить многомерный словарь.

Версия php будет примерно такой:

foreach($query as $rows):
    $values[$rows->id][] = $rows->name;
endforeach;

return $values;

Не могу найти следующие проблемы:

  • Что представляет собой способ добавления ключей в словарь на языке python, используя автоматическую нумерацию, например, $ значения []

  • Как мне заполнить словарь Python переменными; использование, например, значений [id] = name, не добавит ключи, но переопределит существующие.

Я совершенно не представляю, как этого добиться, поскольку я новичок в Python (вообще программирование).

Ответы [ 4 ]

8 голосов
/ 10 февраля 2010
values = collections.defaultdict(list)
for rows in query:
  values[rows.id].append(rows.name)
return values
4 голосов
/ 10 февраля 2010

Просто общее примечание:

  1. Словари Python являются отображениями без порядка, в то время как добавление числовых ключей позволило бы «последовательный» доступ, в случае итерации нет гарантии, что порядок будет совпадать с естественным порядком ключей.
  2. Лучше не переводить с PHP на Python (или любой другой язык), а правильно подобрать код, идиоматический для этого конкретного языка. Взгляните на множество кода с открытым исходным кодом, который делает то же самое / похожие вещи, вы можете даже найти полезный модуль (библиотеку).
2 голосов
/ 10 февраля 2010
   all_rows=[] 
   for row in query:
       all_rows.append(row['col'])
   print(all_rows)
1 голос
/ 10 февраля 2010

Вы можете сделать:

from collections import defaultdict

values = defaultdict(list)
for row in query:
    values[row.id].append(row.name)

return values

Редактировать: забыл вернуть значения.

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