Me preguntaba si hay una manera de obtener un valor en un índice específico. Digamos que tengo una clave con múltiples valores asociados. Pero en mi diccionario tengo varias claves, cada clave con múltiples valores. Quiero iterar a través de las claves y luego cada valor respectivo asociado con esa clave. Quiero poder extraer el valor en el primer índice y restarlo del valor en el segundo índice.

d= {108572791: [200356.77, 200358], 108577388: [19168.7, 19169]}

output for key 108572791 would be -1.33
output for key 108577388 would be -.03

Intenté leer sobre dict y cómo funciona, aparentemente no se puede indexar. Solo quería saber si hay una manera de evitar eso.

for key, values in total_iteritems():
    for value in values:
       value[0]-value[1]:
0
to3 7 oct. 2019 a las 17:33

3 respuestas

La mejor respuesta

Editar:

Como la pregunta es muy diferente ahora, abordaré el nuevo tema:

d= {108572791: [200356.77, 200358], 108577388: [19168.7, 19169]}
for i in d:
    print("Output for key ",str(i), "would be ",(d[i][1]-d[i][0]))

Salida:

Output for key  108572791 would be  1.2300000000104774
Output for key  108577388 would be  0.2999999999992724

Respuesta original

Si. Cuando tiene un dict que contiene una lista como value si desea obtener un valor específico, entonces necesita abordar el índice en la lista. Un ejemplo es:

a = {'Name':['John','Max','Robert']}

Esto significa que:

print(a['Name']) 

Salida:

['John','Max','Robert']

Como ['Nombre'] es una lista:

for i in range(len(a['Name'])):
    print(a['Name'][i]

Salida:

John #(Because it's the index 0)
Max #(Index = 1)
Robert #(Index = 2)

Si desea un valor específico (por ejemplo, 'Max' que es index = 1)

print(a['Name'][1]

Salida:

Max
3
Celius Stingher 7 oct. 2019 a las 15:01

Depende de cuántos valores en clave obvio, pero esto funciona:

for x in d:
        print(x)
        print(d[x][0]-d[x][1])
0
cloud88111 7 oct. 2019 a las 14:38

Puede usar la lista de tuplas si desea usar la indexación.

d = [(108572791, [200356.77, 200358]), (108577388, [19168.7, 19169)]

for tuple in my_list:
   print(tuple[0]) 
   for value in tuple[1]:
       print(value) 
0
Marceline 7 oct. 2019 a las 14:50
58271729