2010-09-23 18 views
39

Come aggiungere chiave, coppia valore al dizionario? .Below ho menzionato il seguente formato?Come aggiungere una chiave, una coppia di valori al dizionario?

{'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

Eventuali duplicati di [Aggiungere nuove chiavi un dizionario?] (https://stackoverflow.com/questions/1024847/add-new-keys-to-a-dictionary) –

risposta

75

aggiungere una chiave, coppia di valori dizionario

aDict = {} 
aDict[key] = value 

Che cosa si intende con l'aggiunta dinamica.

+0

Grazie è worki ng ... volevo dire set di query. Sai quali sono le preoccupazioni che usano python..non conosco la novità di questa tecnologia prima di aver lavorato in dotnet. – Krishnasamy

+0

@Krishnasamy: Se hai già lavorato su dotnet, con Python sarà un piacere lavorare. È versatile come dotnet e java, se non di più – pyfunc

6

Non sono sicuro di cosa intendi per "dinamico". Se si intende aggiungere elementi a un dizionario in fase di runtime, è facile come dictionary[key] = value.

Se si desidera creare un dizionario con la chiave, il valore di iniziare con (al momento della compilazione) quindi utilizzare (sorpresa!)

dictionary[key] = value 
3

Se si desidera aggiungere un nuovo record nella forma

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

a messageName dove messageName in forma X_somemessage può, ma non deve essere nel vostro dizionario, allora fare in questo modo:

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

In questo modo verrà aggiunto uno messageName esistente o verrà creato un nuovo elenco per un nuovo messageName.

+0

In alternativa puoi iniziare con 'defaultdict (list)'. –

1

può essere qualche volta anche sarà utile in uscita

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) 

Esempio:

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

sono arrivato qui alla ricerca di un modo per aggiungere una coppia chiave/valore (s) come gruppo - nel mio caso era l'uscita di una chiamata di funzione, quindi l'aggiunta della coppia usando dictionary[key] = value richiederebbe che io conosca il nome della/e chiave/e.

In questo caso, è possibile utilizzare il metodo di aggiornamento: dictionary.update(function_that_returns_a_dict(*args, **kwargs)))

attenzione, se dictionary contiene già una delle chiavi, il valore originale verrà sovrascritto.

11

Per un riferimento rapido, tutti i seguenti metodi aggiungerà una nuova chiave 'a' se non esiste già o si aggiorna la coppia esistente chiave valore con il nuovo valore offerto:

data['a']=1 

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

data.update(dict(a=1)) 

data.update(a=1) 

Puoi anche loro mescolando, per esempio, se la chiave 'c' è nei dati ma 'd' non è, il seguente metodo aggiornamenti 'c' e aggiunge 'd'

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

Perché il voto negativo?La risposta sta cercando di aggiungere informazioni utili in modo che gli spettatori possano avere una risposta alternativa che IMHO è più completa, potrebbe il gentiluomo/le donne che hanno votato per favore chiarire? – Zhenhua

+0

Non è necessario rispondere a questa domanda poiché è un duplicato - il modo appropriato di gestirlo è contrassegnarlo come un duplicato - vedere maggiori informazioni lì [Come devono essere gestite le domande duplicate?] (Https: //meta.stackexchange .com/questions/10841/how-should-duplicate-questions-be-handled) –

+1

@Zhenhua Ho trovato utile questa risposta in aumento. – Shek

Problemi correlati