格式化我的詞典列表:名單詞典 - 如何打印輸出
lis = [{'score': 7, 'numrep': 0}, {'score': 2, 'numrep': 0}, {'score': 9, 'numrep': 0}, {'score': 2, 'numrep': 0}]
我如何格式化print
函數的輸出:
print(lis)
所以我會得到什麼樣:
[{7-0}, {2-0}, {9-0}, {2-0}]
格式化我的詞典列表:名單詞典 - 如何打印輸出
lis = [{'score': 7, 'numrep': 0}, {'score': 2, 'numrep': 0}, {'score': 9, 'numrep': 0}, {'score': 2, 'numrep': 0}]
我如何格式化print
函數的輸出:
print(lis)
所以我會得到什麼樣:
[{7-0}, {2-0}, {9-0}, {2-0}]
列表比較會做:
['{{{0[score]}-{0[numrep]}}}'.format(d) for d in lst]
此輸出字符串列表,所以與報價:
['{7-0}', '{2-0}', '{9-0}', '{2-0}']
我們可以格式化多一點:
'[{}]'.format(', '.join(['{{{0[score]}-{0[numrep]}}}'.format(d) for d in lst]))
演示:
>>> print ['{{{0[score]}-{0[numrep]}}}'.format(d) for d in lst]
['{7-0}', '{2-0}', '{9-0}', '{2-0}']
>>> print '[{}]'.format(', '.join(['{{{0[score]}-{0[numrep]}}}'.format(d) for d in lst]))
[{7-0}, {2-0}, {9-0}, {2-0}]
替代格式化字符串以避免過多的方法已經{{
和}}
捲曲括號轉義:
使用舊式%
格式:使用string.Template()
對象
'{%(score)s-%(numrep)s}' % d
:
from string import Template
f = Template('{$score-$numrep}')
f.substitute(d)
進一步演示:
>>> print '[{}]'.format(', '.join(['{%(score)s-%(numrep)s}' % d for d in lst]))
[{7-0}, {2-0}, {9-0}, {2-0}]
>>> from string import Template
>>> f = Template('{$score-$numrep}')
>>> print '[{}]'.format(', '.join([f.substitute(d) for d in lst]))
[{7-0}, {2-0}, {9-0}, {2-0}]
您可以使用列表理解和string formatting:
>>> lis = [{'score': 7, 'numrep': 0}, {'score': 2, 'numrep': 0}, {'score': 9, 'numrep': 0}, {'score': 2, 'numrep': 0}]
>>> ["{{{score}-{numrep}}}".format(**dic) for dic in lis]
['{7-0}', '{2-0}', '{9-0}', '{2-0}']
新樣式格式要求{{}}
逃脫{}
,所以它的這種情況有點不太可讀。另一種選擇是string.Template
,它允許$
作爲佔位的鍵,以便該解決方案是在這種情況下:
>>> from string import Template
>>> s = Template('{$score-$numrep}')
>>> [s.substitute(dic) for dic in lis]
['{7-0}', '{2-0}', '{9-0}', '{2-0}']
如果不是字符串列表,你需要一個字符串更可讀,那就試試這個:
>>> from string import Template
>>> s = Template('{$score-$numrep}')
>>> print '[{}]'.format(', '.join(s.substitute(dic) for dic in lis))
[{7-0}, {2-0}, {9-0}, {2-0}]
l = [
{'score': 7, 'numrep': 0},
{'score': 2, 'numrep': 0},
{'score': 9, 'numrep': 0},
{'score': 2, 'numrep': 0}
]
keys = ['score', 'numrep']
print ",".join([ '{ %d-%d }' % tuple(ll[k] for k in keys) for ll in l ])
輸出:
{ 7-0 },{ 2-0 },{ 9-0 },{ 2-0 }
'dict.values'的順序是任意的。 –
@AshwiniChaudhary,哦對!已更新 – perreal
刪除了-1。仍然''{%(score)s - %(numrep)s''%ll'比你想要做的更好。 –