我有一本字典,如:
a = { "Linux": "Linus Torvalds",
"Microsoft": "Bill Gates",
"Apple": "Steve Jobs"}
我想将这个词典字符串化为:
Linux : Linus Torvalds
Microsoft: Bill Gates
Apple : Steve Jobs
为了执行此操作,我有以下代码:
data = ""
for product, lead in a.items():
data += product + ": " + lead + "\n"
此代码产生以下结果:
print(data)
Linux: Linus Torvalds
Microsoft: Bill Gates
Apple: Steve Jobs
我想用更多的Pythonic方法来执行此操作,因为我认为我的代码更像是解决此问题的过程方法(初始化和操作)。此外,有关正确格式化data
的任何提示都不会出错。
答案 0 :(得分:4)
如果你想让它们像你一样格式化
print('\n'.join(['{:<9}: {}'.format(k, v) for k, v in a.items()]))
打印
Apple : Steve Jobs
Linux : Linus Torvalds
Microsoft: Bill Gates
答案 1 :(得分:3)
您可以使用嵌套的str.join
操作。
print('\n'.join(': '.join(item) for item in a.items()))
# Linux: Linus Torvalds
# Microsoft: Bill Gates
# Apple: Steve Jobs
这会创建一个生成器,其中包含由': '
分隔的键和值,然后将它们与&#39; \n
&#39;一起加入。
答案 2 :(得分:1)
首先使用dict
将map
转换为可迭代,然后使用join
加入元素:
work_person = map(lambda x: x[0]+': '+x[1], a.items())
res = '\n'.join(work_person)
答案 3 :(得分:1)
我想补充帕特里克的答案,检查填充键的最长键长度:
max_length = max(len(k) for k in a)
print('\n'.join(['{:<{}}: {}'.format(k, max_length, v) for k, v in a.items()]))