2011-12-15 88 views

回答

58

經過dict.items()迭代器,將產生的鍵,值元組:

'<br/>'.join(['%s:: %s' % (key, value) for (key, value) in d.items()]) 
+1

這是最Python的解決方案,我見過。真棒。 – 2014-12-09 01:54:02

4

即,或者甚至更冷的溶液中使用join加入兩個項目的(鍵,值)對,從而避免現已過時的%插值,只使用一個單一的虛擬變量_,和刪除冗餘列表理解:

"<br/>".join(":: ".join(_) for _ in mydict.items()) 

注意類型的字典沒有排序,所以沒有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' 
1

我喜歡什麼菲利普Dupanović沒有以上。我使用str.format方法將其修改爲python3-ish。

'<br/>'.join(['{0}:: {1}'.format(key, value) for (key, value) in d.items()]) 

我修改了上面生成的字符串我可以養活一個SQL表創建語句。

fieldpairs = ','.join(['{0} {1}'.format(key, value) for (key, value) in HiveTypes.items()]) 
+0

需要編輯。 – 2017-06-15 15:06:39