Python与PHP foreach[]的等价物?

Python与PHP foreach[]的等价物?,python,dictionary,key,Python,Dictionary,Key,我正在从数据库中提取行,并希望填充多维字典 php版本大致如下: foreach($query as $rows): $values[$rows->id][] = $rows->name; endforeach; return $values; 我似乎无法找出以下问题: python使用自动编号(例如$values[] 如何使用变量填充Python字典;例如,使用值[id]=name不会添加键,而是覆盖现有键 我完全不知道如何实现这一点,因为我是Python初学者(实

我正在从数据库中提取行,并希望填充多维字典

php版本大致如下:

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

return $values;
我似乎无法找出以下问题:

  • python使用自动编号(例如$values[]

  • 如何使用变量填充Python字典;例如,使用值[id]=name不会添加键,而是覆盖现有键

我完全不知道如何实现这一点,因为我是Python初学者(实际上是一般编程)。

您可以:

from collections import defaultdict

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

return values
编辑:忘记返回值。

您可以执行以下操作:

from collections import defaultdict

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

return values
编辑:忘记返回值。

只是一个一般说明:

  • Python的字典是没有顺序的映射,而添加数字键将允许“顺序”访问,在迭代的情况下,不能保证顺序与键的自然顺序一致
  • 最好不要将PHP翻译成Python(或任何其他语言),而是将正确的代码惯用于该特定语言。看看许多做相同/类似事情的开源代码,您甚至可能会发现一个有用的模块(库)
  • 仅作一般说明:

  • Python的字典是没有顺序的映射,而添加数字键将允许“顺序”访问,在迭代的情况下,不能保证顺序与键的自然顺序一致
  • 最好不要将PHP翻译成Python(或任何其他语言),而是将正确的代码惯用于该特定语言。看看许多做相同/类似事情的开源代码,您甚至可能会发现一个有用的模块(库)
  • from collections import defaultdict
    
    values = defaultdict(list)
    for row in query:
        values[row.id].append(row.name)
    
    return values