[英]Generating string from a dictionary
假設我有這樣的事情:
counts = {"chuck" : 1 , "annie" : 42, "jan" : 100}
lst = list(counts.keys())
lst.sort()
for key in lst:
print(key, counts[key])
輸出將是
chuck 1
annie 42
jan 100
如果我想使用字符串來實現此效果,則該字符串將表示為
"chuck 1\nannie 42\njan 100\n"
現在,如果我想完成此字符串,可以嘗試執行以下操作:
for key, value in counts.items():
if value == 1:
counts[key] = "1\n"
elif value == 42:
counts[key] = "42\n"
elif value == 100:
counts[key] = "100\n"
temp = list(counts.items())
temp.sort()
myStr = str(temp)
for char in myStr:
if char in "[(',)]":
myStr = myStr.replace(char,'')
finalStr = "" + myStr[0:19] + "" + myStr[20:37] + "" + myStr[38:53] + ""
但是,是的,我想我太復雜了……什么是更好和簡單的方法?
謝謝!
您可以通過將每個key, value
格式化為您期望的每個"{} {}".format(key, value)
string格式來實現"{} {}".format(key, value)
然后,加入“ \\ n”:
"\n".join(["{} {}".format(key, value) for key, value in counts.items()])
演示:
輸入:
counts = {"chuck" : 1 , "annie" : 42, "jan" : 100}
輸出:
jan 100
chuck 1
annie 42
注意sorted
是一項要求,因此這里是排序:
"\n".join(["{} {}".format(key, value) for key, value in sorted(counts.items())])
輸出:
annie 42
chuck 1
jan 100
簡潔排序:
>>> '\n'.join(sorted([k+' '+str(v) for k, v in counts.items())])
'annie 42\nchuck 1\njan 100'
排序行而不是項目。 實際上,通過%timeit
衡量,這種方法更快。
這有點笨拙:
'\n'.join(["{0} {1}".format(a,b) for a,b in counts.items()])
如果您要簡潔。
d = {"chuck" : 1 , "annie" : 42, "jan" : 100}
'\n'.join('{} {}'.format(*item) for item in sorted(d.items()))
d = {"chuck" : 1 , "annie" : 42, "jan" : 100};
s = '\n'.join(['%s %s' % (key, value) for (key, value) in sorted(d.items(), key=lambda x: x[1])])
print(s) # 'chuck 1\nannie 42\njan 100'
d = {"chuck" : 1 , "annie" : 42, "jan" : 100};
s = '\n'.join(['%s %s' % (key, value) for (key, value) in sorted(d.items(), key=lambda x: x[0])])
print(s) # 'annie 42\nchuck 1\njan 100'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.