2010-09-23 5 views
39

Как добавить ключ, значение пары в словарь? .Below Я упомянул следующий формат?Как добавить ключ, значение пары в словарь?

{'1_somemessage': [[3L, 
        1L, 
        u'AAA', 
        1689544L, 
        datetime.datetime(2010, 9, 21, 22, 30), 
        u'gffggf'], 
        [3L, 
        1L, 
        u'BBB', 
        1689544L, 
        datetime.datetime(2010, 9, 21, 20, 30), 
        u'ffgffgfg'], 
        [3L, 
        1L, 
        u'CCC', 
        1689544L, 
        datetime.datetime(2010, 9, 21, 22, 30), 
        u'hjhjhjhj'], 
        [3L, 
        1L, 
        u'DDD', 
        1689544L, 
        datetime.datetime(2010, 9, 21, 21, 45), 
        u'jhhjjh']], 
'2_somemessage': [[4L, 
        1L, 
        u'AAA', 
        1689544L, 
        datetime.datetime(2010, 9, 21, 22, 30), 
        u'gffggf'], 
        [4L, 
        1L, 
        u'BBB', 
        1689544L, 
        datetime.datetime(2010, 9, 21, 20, 30), 
        u'ffgffgfg'], 
        [4L, 
        1L, 
        u'CCC', 
        1689544L, 
        datetime.datetime(2010, 9, 21, 22, 30), 
        u'hjhjhjhj'], 
        [4L, 
        1L, 
        u'DDD', 
        1689544L, 
        datetime.datetime(2010, 9, 21, 21, 45), 
        u'jhhjjh']]} 
+1

Возможный дубликат [Добавить новые ключи словарь?] (https://stackoverflow.com/questions/1024847/add-new-keys-to-a-dictionary) –

ответ

75

Добавить ключ, значение пары в словарь

aDict = {} 
aDict[key] = value 

Что вы имеете в виду с помощью динамического добавления.

+0

Спасибо, это worki ng..I означает результат запроса. Вы знаете, какие проблемы связаны с использованием python. Я не знаю, что я новичок в этой технологии, прежде чем я работал в dotnet. – Krishnasamy

+0

@ Krishnasamy: Если вы раньше работали над dotnet, Python будет с удовольствием работать. Он так же универсален, как dotnet и java, если не больше – pyfunc

6

Я не уверен, что вы подразумеваете под «динамическим». Если вы имеете в виду добавление элементов в словарь во время выполнения, это так же просто, как dictionary[key] = value.

Если вы хотите создать словарь с ключом, значение для начала (во время компиляции), а затем использовать (сюрприз!)

dictionary[key] = value 
3

Если вы хотите добавить новую запись в виде

newRecord = [4L, 1L, u'DDD', 1689544L, datetime.datetime(2010, 9, 21, 21, 45), u'jhhjjh'] 

в messageName где messageName в виде X_somemessage может, но не должны быть в словаре, то сделать это таким образом:

myDict.setdefault(messageName, []).append(newRecord) 

Таким образом он будет добавлен к существующему messageName, или новый список будет создан для нового messageName.

+0

. Альтернативно вы можете начать с 'defaultdict (list)'. –

1

Может быть какое-то время это также будет полезно

import collections 
#Write you select statement here and other things to fetch the data. 
if rows: 
      JArray = [] 
      for row in rows: 

       JArray2 = collections.OrderedDict() 
       JArray2["id"]= str(row['id']) 
       JArray2["Name"]= row['catagoryname'] 
       JArray.append(JArray2) 

      return json.dumps(JArray) 

Результат:

[ 
    { 
     "id": 14 
     "Name": "someName1" 
    }, 
    { 
     "id": 15 
     "Name": "someName2" 
    } 
] 
7

Я получил здесь искал способ, чтобы добавить пару (ы) ключ/значение в качестве группы - в моем случае это был результат вызова функции, поэтому добавление пары с использованием dictionary[key] = value потребует от меня знать имя ключа (ов).

В этом случае, вы можете использовать метод обновления: dictionary.update(function_that_returns_a_dict(*args, **kwargs)))

Берегитесь, если dictionary уже содержит одну из клавиш, исходное значение будет перезаписана.

11

Для быстрого ознакомления, все следующие методы добавят новый ключ «а», если он уже не существует, или он будет обновлять существующий ключ значения пару с новым значением предложили:

data['a']=1 

data.update({'a':1}) 

data.update(dict(a=1)) 

data.update(a=1) 

Вы можете также смешивая их, например, если ключ «с» в данных, но «d» не, следующий метод будет обновляет «с» и добавляет «d»

data.update({'c':3,'d':4}) 
+0

Почему голос?Ответ заключается в попытке добавить полезную информацию, чтобы зрители могли получить альтернативный ответ, который ИМХО является более всеобъемлющим, может ли прояснить вопрос о джентльмене/женщинах, которые проголосовали за проголосовать? – Zhenhua

+0

Вам не нужно отвечать на этот вопрос, так как его дубликат - соответствующий способ его обработки - помечать его как обманщик - см. Больше информации там [Как дублировать вопросы?] (Https: //meta.stackexchange .com/questions/10841/how-should-duplicate-questions-be-handled) –

+1

@Zhenhua Я нашел этот ответ полезным. – Shek