¿Cómo obtener un valor único de dict con una sola entrada?

Vi cómo extraer un solo par clave-valor de diccionario en las variables que sugieren:

d = {"a":1} (k, v), = d.items() 

Pero: solo me importa el valor . Y quiero pasar ese valor a un método; me gusta:

 foo(v) 

Entonces, la pregunta es: ¿existe un comando simple que funcione tanto para python2 como para python3 que me dé ese valor directamente, sin el desvío de la asignación de la “tupla”?

¿O hay una manera de hacer que la asignación de tuplas funcione para mi caso de uso de un método?

list(d.values())[0] se evaluará a 1. Como se señala en los comentarios, la list de conversión solo se necesita en python3.

next(iter(d.values())) es otra posibilidad (probablemente más eficiente en memoria, ya que no es necesario crear una lista)

Ambas soluciones testan localmente con python 3.6.0 y en TIO con python 2 .

next(iter(d.values())) es la forma natural de extraer el único valor de un diccionario. La conversión a la list solo para extraer el único elemento no es necesaria.

También tiene el mejor rendimiento de las opciones disponibles (probado en Python 3.6):

 d = [{'a': i} for i in range(100000)] %timeit [next(iter(i.values())) for i in d] # 50.1 ms per loop %timeit [list(i.values())[0] for i in d] # 54.8 ms per loop %timeit [list(i.values()).pop() for i in d] # 81.8 ms per loop 

¿Existe un comando simple que funcione tanto para python2 como para python3 que me dé ese valor directamente, sin el desvío de la asignación “tupla”?

La solución que utiliza dict.copy() (para conservar el dict original) y las funciones dict.popitem() :

 d = {"a":1} foo(d.copy().popitem()[1]) 

Si conoce la clave, simplemente puede hacer:

 d["a"] output : 1 

Y si no conoces la clave:

 for key in d.keys(): d[key] #so basically you have to do : for key in d.keys(): f00(d[key])