現在、私はキーのみをそれぞれ新しい行に表示しています:
'<br/>'.join(mydict)
key :: valueのように表示するにはどうすればよいですか?
キー、値のタプルを生成するdict.items()
イテレータを通過します。
'<br/>'.join(['%s:: %s' % (key, value) for (key, value) in d.items()])
In python 3.6私はこの構文を好むので、コードがさらに読みやすくなります。
'<br/>'.join([f'{key}: {value}' for key, value in d.items()])
PEP 498-リテラル文字列補間 を参照してください
それ、またはjoin
を使用して両方の項目を結合するさらにクールなソリューションand(キー、値)のペアで、現在廃止されている_%
_補間を回避し、単一のダミー変数__
_、および冗長リストの内包表記の削除:
_"<br/>".join(":: ".join(_) for _ in mydict.items())
_
Dictには順序がないため、sorted()
がないと、必要なものが得られない場合があります。
_>>> mydict = dict(a="A", b="B", c="C")
>>> ", ".join("=".join(_) for _ in mydict.items())
'a=A, c=C, b=B'
_
これは、すべてのキーと値が文字列の場合にのみ機能します。そうでない場合、join
がエラーを出します。より堅牢なソリューションは次のとおりです。
_", ".join("=".join((str(k),str(v))) for k,v in mydict.items())
_
混合型のキーおよび値に対しても、これは素晴らしい動作をします:
_>>> 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'
_
もちろん、混合型の場合、プレーンsorted()
は期待どおりに機能しません。すべてのキーが文字列(またはすべて数値など)であることがわかっている場合にのみ使用してください。前者の場合、最初のstr()
も削除できます:
_>>> 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'
_
私はフィリップ・デュパノビッチが上でしたことが好きでした。 str.format
メソッドを使用して、これをpython3-ishに変更しました。
'<br/>'.join(['{0}:: {1}'.format(key, value) for (key, value) in d.items()])
上記を変更して、SQLテーブルのcreateステートメントにフィードできる文字列を生成しました。
fieldpairs = ','.join(['{0} {1}'.format(key, value) for (key, value) in HiveTypes.items()])
more Pythonicにしたい場合は、for
-- comprehensionを完全に削除できます。
'<br/>'.join(map(':: '.join, mydict.items())