values keys dictionaries create python dictionary

keys - Accediendo a los elementos del diccionario python



python dictionary of dictionaries (7)

Considera un dict como

mydict = { ''Apple'': {''American'':''16'', ''Mexican'':10, ''Chinese'':5}, ''Grapes'':{''Arabian'':''25'',''Indian'':''20''} }

¿Cómo accedo, por ejemplo, a un elemento particular de este diccionario? por ejemplo, me gustaría imprimir el primer elemento después de formatear el primer elemento de Apple, que en nuestro caso es solo ''americano''.

Información adicional La estructura de datos anterior se creó al analizar un archivo de entrada en una función python. Una vez creado, sin embargo, permanece igual para esa ejecución.

Estoy usando esta estructura de datos en mi función.

Entonces, si el archivo cambia, la próxima vez que se ejecute esta aplicación, los contenidos del archivo serán diferentes y, por lo tanto, el contenido de esta estructura de datos será diferente, pero el formato será el mismo. Así que, como ven en mi función, no sé si el primer elemento de Apple es "americano" o cualquier otra cosa, así que no puedo usar directamente "estadounidense" como clave


Como beneficio adicional, me gustaría ofrecer una especie de solución diferente a su problema. Parece que maneja diccionarios anidados, lo que suele ser tedioso, especialmente cuando tiene que verificar la existencia de una clave interna.

Hay algunas bibliotecas interesantes con respecto a esto en pypi, aquí hay una búsqueda rápida para ti.

En su caso específico, dict_digger parece adecuado.

>>> import dict_digger >>> d = { ''Apple'': {''American'':''16'', ''Mexican'':10, ''Chinese'':5}, ''Grapes'':{''Arabian'':''25'',''Indian'':''20''} } >>> print(dict_digger.dig(d, ''Apple'',''American'')) 16 >>> print(dict_digger.dig(d, ''Grapes'',''American'')) None


Cuando noté su descripción, simplemente sabe que su analizador le dará un diccionario que dice que sus valores son también del siguiente estilo:

sampleDict = { "key1": {"key10": "value10", "key11": "value11"}, "key2": {"key20": "value20", "key21": "value21"} }

Entonces debes iterar sobre tu diccionario padre. Si desea imprimir o acceder a todas las primeras claves del diccionario en la lista sampleDict.values() , puede usar algo como esto:

for key, value in sampleDict.items(): print value.keys()[0]

Si solo desea acceder a la primera clave del primer elemento en sampleDict.values() , esto puede ser útil:

print sampleDict.values()[0].keys()[0]

Si usa el ejemplo que dio en la pregunta, quiero decir:

sampleDict = { ''Apple'': {''American'':''16'', ''Mexican'':10, ''Chinese'':5}, ''Grapes'':{''Arabian'':''25'',''Indian'':''20''} }

La salida para el primer código es:

American Indian

Y la salida para el segundo código es:

American


Dado que es un diccionario, puede acceder utilizando las teclas. Obtener el diccionario almacenado en "Apple", haga lo siguiente:

>>> mydict["Apple"] {''American'': ''16'', ''Mexican'': 10, ''Chinese'': 5}

Y obtener cuántos de ellos son estadounidenses (16), haga esto así:

>>> mydict["Apple"]["American"] ''16''


Ejemplo simple para comprender cómo acceder a los elementos en el diccionario: -

Crear un diccionario

d = {''dog'' : ''bark'', ''cat'' : ''meow'' } print(d.get(''cat'')) print(d.get(''lion'')) print(d.get(''lion'', ''Not in the dictionary'')) print(d.get(''lion'', ''NA'')) print(d.get(''dog'', ''NA''))

Explore más sobre los diccionarios de Python y aprenda de forma interactiva aquí ...



Puede usar dict[''Apple''].keys()[0] para obtener la primera clave en el diccionario de Apple , pero no hay garantía de que sea American . El orden de las claves en un diccionario puede cambiar según el contenido del diccionario y el orden en que se agregaron las claves.


Si la pregunta es, si sé que tengo un dict de dicts que contiene ''Apple'' como fruta y ''American'' como tipo de manzana, usaría:

myDict = {''Apple'': {''American'':''16'', ''Mexican'':10, ''Chinese'':5}, ''Grapes'':{''Arabian'':''25'',''Indian'':''20''} } print myDict[''Apple''][''American'']

como otros sugirieron. Si, en cambio, las preguntas son, no sabe si existen ''Apple'' como fruta y ''American'' como un tipo de ''Apple'' cuando lee un archivo arbitrario en su estructura de datos dict de dict, podría hacer algo como:

print [ftype[''American''] for f,ftype in myDict.iteritems() if f == ''Apple'' and ''American'' in ftype]

o mejor aún, para que no iteres innecesariamente sobre todo el dictado de los dictados si sabes que solo Apple tiene el tipo estadounidense:

if ''Apple'' in myDict: if ''American'' in myDict[''Apple'']: print myDict[''Apple''][''American'']

En todos estos casos, no importa en qué orden los diccionarios realmente almacenan las entradas. Si realmente está preocupado por el pedido, considere usar un OrderedDict :

http://docs.python.org/dev/library/collections.html#collections.OrderedDict