转换 PHP 代码以将新值附加到 dict 中的同一键


transform php code to append new values to the same key in dict

我知道如何做到这一点的唯一方法是使用php,但我想在python中获得相同的结果。

PHP代码:

<?php
$array = array();
$array['value1'][] = 'new value 1';
$array['value1'][] = 'new value 2';
?>

我有这个代码。

array = dict()
array['value 1'] = 'new value 1'
#array['value 1'].append('new value 2') - Error - only works with list

我该怎么做?问候。

my_dict = {}
my_dict['value1'] = ['new value 1']
my_dict['value1'] += ['new value 2', 'new value 3']

第一行初始化字典,第二行初始化my_dict['value1']包含一个元素的列表,最后一行将两个元素添加到此列表中。请注意+=

注意:如果您不知道字典中是否已存在密钥'value1',则需要使用另一种方法(感谢 SirParselot)。如果您不知道它是否存在,请使用它:

my_dict['value2'] = my_dict.get('value2', []) + ['new value 4', 'new value 5']

或者您可以使用setdefault

array = {}
array.setdefault('value 1', []).append('new value 1')
array.setdefault('value 1', []).append('new value 2')

你可以像这样使用collections模块中的defaultdict()

import collections
my_dict = collections.defaultdict(list)
my_dict['value1'].append('new value 1')
my_dict['value1'].append('new value 2')
{'value1': ['new value 1', 'new value 2']}

defaultdict()将类型作为参数,每次创建新键时,它都会有一个空列表作为值。这对于将列表作为值特别有用。这样,您就不需要 if 语句来检查该键是否已存在。