Pythonic迭代字典以将其项转换为字符串的方法

时间:2017-01-10 15:58:20

标签: python string python-3.x dictionary printing

我有一本字典,如:

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的任何提示都不会出错。

4 个答案:

答案 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)

首先使用dictmap转换为可迭代,然后使用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()]))
相关问题