2016-02-10 3 views
-1

Единственный способ, которым я знаю, как это сделать, - это php, но я хочу получить тот же результат в python.преобразовать php-код в python - добавить новые значения к одному и тому же ключу в dict

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 

Как я могу это сделать? С уважением.

+0

В Python массивы с числовыми индексами называются списками. Вот официальный учебник Python по ним: https://docs.python.org/3/tutorial/introduction.html#lists – Boldewyn

+0

Что делает ваш PHP-код? что он будет показывать при печати $ массива? – dnit13

ответ

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

Первая строка инициализирует словаря, второй инициализирует my_dict['value1'] со списком, содержащим один элемент, а последняя строка добавляет два элемента в этом списке. Обратите внимание на +=.

Примечание: вам нужно использовать другой метод, если вы не знаете, существует ли ключ 'value1' в dict (спасибо SirParselot). Используйте это, если вы не знаете, если она существует:

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

Спасибо! что я искал !! – wu4m4n

+0

извините, если я объясню этот вопрос очень плохо, мой английский его не очень хорошо. – wu4m4n

+0

Обратите внимание, что это работает только в том случае, если вы знаете, что ключ '' value1'' существует в dict. Вам понадобится инструкция if иначе, поскольку '+ =' будет выдавать ошибку, если ключ еще не существует. – SirParselot

1

Или вы можете использовать setdefault:

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

вы можете использовать defaultdict() из collections модуля как так

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, чтобы проверить, существует ли этот ключ.

+0

yhea! это может сработать! Благодаря ! – wu4m4n

Смежные вопросы