Convertir diccionario en cadena

Convertir diccionario en cadena

d={'a':'Apple','b':'ball','c':'cat'}

Tengo el diccionario anterior y quiero que mi salida sea como el resultado mencionado a continuación

res="a=Apple,b=ball,c=cat"

¿Es posible de una manera pythonic? Entonces, responda. ¿He probado varios métodos pero no obtuve el resultado deseado?

Mostrar la mejor respuesta

que intentaste por favor comparte tu trabajo anterior

Avatar jpp

Una forma es iterar a través de dict.items y usar varias llamadas str.join.

d = {'a':'Apple','b':'ball','c':'cat'}

res = ','.join(['='.join(i) for i in d.items()])

# 'a=Apple,b=ball,c=cat'

Si necesita artículos ordenados por clave, use sorted(d.items()).

Lea su diccionario como pares clave/valor (dict.items()) y luego formatéelos en una cadena que le guste:

d = {'a': 'Apple', 'b': 'ball', 'c': 'cat'}

res = ",".join("{}={}".format(*i) for i in d.items())  # a=Apple,c=cat,b=ball

El orden, sin embargo, no se puede garantizar para un dict, use collections.OrderedDict() si el orden es importante.

@SamreshKumarJha: antes de Python 3.6 (al menos en CPython), no se garantizaba que los diccionarios conservaran el orden. De hecho, solo se garantiza que preservarán el orden de inserción en la implementación de CPython de Python 3.6; la garantía de todo el intérprete solo viene con Python 3.7. Todo lo que no se garantiza que se ejecute en CPython 3.6+ o un intérprete general de Python 3.7+ no debe contar con el pedido de dict.

Ligero detalle: join puede tomar una lista/tupla de comprensión, no es necesario envolverlo en una capa adicional de paréntesis

def format_dict(d):
    vals = list(d.values())
    return "={},".join(d.keys()).format(*vals) + "={}".format(vals[-1])

d = {'a': 'Apple', 'b': 'ball', 'c': 'cat'}
format_dict(d)  # -> 'a=Apple,b=ball,c=cat'

Esto une todas las claves en una cadena grande que contiene campos de reemplazo que luego formateamos pasando los valores dict como argumentos. No había un campo de reemplazo final, por lo que concatenamos el último valor en el diccionario a nuestra cadena grande.

Para cualquiera que venga aquí buscando una forma de extraer explícitamente las claves y los valores del diccionario (por ejemplo, si se requiere más formato):

d = {'a':'Apple','b':'ball','c':'cat'}
res = ','.join(f'{k}={v}' for k, v in d.items())  
# --> a=Apple, b=ball, c=cat

(usa python 3.6+ f-strings)