chiavi attualmente sto visualizzazione, ciascuno in nuova linea:python: dizionario in stringa, formato personalizzato? solo
'<br/>'.join(mydict)
Come faccio a visualizzare loro come chiave :: valore, ogni nella nuova linea?
chiavi attualmente sto visualizzazione, ciascuno in nuova linea:python: dizionario in stringa, formato personalizzato? solo
'<br/>'.join(mydict)
Come faccio a visualizzare loro come chiave :: valore, ogni nella nuova linea?
Go attraverso il dict.items()
iteratore che produrrà una chiave, valore tupla:
'<br/>'.join(['%s:: %s' % (key, value) for (key, value) in d.items()])
Che, o una soluzione ancora più interessante utilizzando join
aderire entrambi gli elementi e i (, valore chiave) coppie, evitando l'ormai obsoleta %
interpolazione, utilizzando solo una singola variabile dummy _
, e far cadere la lista ridondante di comprensione:
"<br/>".join(":: ".join(_) for _ in mydict.items())
essere consapevoli del fatto che non hanno dicts ordinamento, quindi senza sorted()
si potrebbe non ottenere quello che vuoi:
>>> mydict = dict(a="A", b="B", c="C")
>>> ", ".join("=".join(_) for _ in mydict.items())
'a=A, c=C, b=B'
Anche questo funziona solo quando tutte le chiavi e valori sono stringhe, altrimenti join
si lamentano. Una soluzione più robusta sarebbe:
", ".join("=".join((str(k),str(v))) for k,v in mydict.items())
Ora funziona benissimo, anche per le chiavi e valori di tipo misto:
>>> mydict = {'1':1, 2:'2', 3:3}
>>> ", ".join("=".join((str(k),str(v))) for k,v in mydict.items())
'2=2, 3=3, 1=1'
Naturalmente, per i tipi misti una pianura sorted()
non funziona come previsto. Usalo solo se sai che tutte le chiavi sono stringhe (o tutte numeriche, ecc.). Nel primo caso, è possibile eliminare la prima str()
troppo:
>>> mydict = dict(a=1, b=2, c=2)
>>> ", ".join("=".join((k,str(v))) for k,v in sorted(mydict.items()))
'a=1, b=2, c=3'
mi è piaciuto quello Filip Dupanović ha fatto in precedenza. Ho modificato questo per essere python3-ish usando il metodo str.format
.
'<br/>'.join(['{0}:: {1}'.format(key, value) for (key, value) in d.items()])
Ho modificato il precedente per generare una stringa che potrei alimentare a un'istruzione di creazione di una tabella SQL.
fieldpairs = ','.join(['{0} {1}'.format(key, value) for (key, value) in HiveTypes.items()])
richiede la modifica. –
in Python 3.6 preferisco questa sintassi, il che rende il codice ancora più leggibile:
'<br/>'.join([f'{key}: {value}' for key, value in d.items()])
Questa è la soluzione più divinatorio che ho visto. Eccezionale. –