2010-09-23 12 views
39

¿Cómo agregar pares clave, valor al diccionario?. ¿Debo mencionar el siguiente formato?¿Cómo agregar pares clave, valor al diccionario?

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

duplicado posible de [Añadir nuevas claves para un diccionario?] (https://stackoverflow.com/questions/1024847/add-new-keys-to-a-dictionary) –

Respuesta

75

añadir una clave, par de valores al diccionario

aDict = {} 
aDict[key] = value 

¿Qué quiere decir por adición dinámica.

+0

Gracias es worki ng..I quise decir resultset de consulta. ¿Sabes cuáles son las preocupaciones al usar Python?. No sé si soy nuevo en esta tecnología antes de haber trabajado en dotnet. – Krishnasamy

+0

@Krishnasamy: Si anteriormente trabajó en dotnet, Python será un placer trabajar con él. Es tan versátil como dotnet y java, si no más. – pyfunc

6

No estoy seguro de lo que quiere decir con "dinámico". Si se refiere a agregar elementos a un diccionario en tiempo de ejecución, es tan fácil como dictionary[key] = value.

Si se desea crear un diccionario con la clave, el valor para empezar (en tiempo de compilación) a continuación, utilizar (¡sorpresa!)

dictionary[key] = value 
3

Si desea añadir un nuevo registro en la forma

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

a messageName donde messageName en forma X_somemessage puede, pero no tiene que estar en su diccionario, y luego hacerlo de esta manera:

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

De esta forma se adjuntará a una existente messageName o se creará una nueva lista para una nueva messageName.

+0

Alternativamente, puede comenzar con un 'defaultdict (list)'. –

1

puede pasar algún tiempo esto también será útil

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) 

Ejemplo de salida:

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

llegué aquí buscando una manera de añadir un par (s) clave/valor como grupo - en mi caso, era el resultado de una llamada a función, por lo que agregar el par usando dictionary[key] = value requeriría que yo supiera el nombre de la (s) clave (s).

En este caso, puede utilizar el método de actualización: dictionary.update(function_that_returns_a_dict(*args, **kwargs)))

cuidado, si dictionary ya contiene una de las claves, se sobrescribe el valor original.

11

Para tener una referencia rápida, todos los métodos siguientes agregarán una nueva clave 'a' si no existe ya o se actualizará el par existente de valor clave con el nuevo valor ofrecido:

data['a']=1 

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

data.update(dict(a=1)) 

data.update(a=1) 

Puede también mezclarlos, por ejemplo, si la clave 'c' está en los datos, pero 'd' no es, el método siguiente se actualiza 'c' y añade 'd'

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

¿Por qué es el voto hacia abajo?La respuesta es intentar agregar información útil para que los espectadores puedan tener una respuesta alternativa que en mi humilde opinión es más completa, ¿podrían aclarar los caballeros/mujeres que votaron por favor? – Zhenhua

+0

No es necesario que responda esta pregunta ya que es un duplicado; la forma adecuada de manejarlo es marcarlo como una estafa: vea más información allí [¿Cómo se deben manejar las preguntas duplicadas?] (Https: //meta.stackexchange .com/questions/10841/how-should-duplicate-questions-be-handled) –

+1

@Zhenhua Encontré esta respuesta útil votada. – Shek

Cuestiones relacionadas