Python 3 one-liner for 2列出字符串格式?

时间:2016-03-06 17:42:52

标签: python list string-formatting list-comprehension

我在python3类中有2个列表:

self.keys = ["a","b","c","d"]
self.values = [1,2,3,4]

len(self.keys)== len(self.values),总是。

我想创建一个模仿字典打印输出的字符串:{a:1, b:2, c:3, d:4}

我在包含以下内容的方法中执行:

sr = ""
for i,k in enumerate(self.keys):
    sr += "{}:{},".format(k,self.values[i])
return "{%s}" % sr[:len(sr)-1]

有可能在一行吗?如果没有,有更好的方法吗?

3 个答案:

答案 0 :(得分:9)

使用zip,然后将其设为dict

keys = ["a","b","c","d"]
values = [1,2,3,4]

dict(zip(keys, values))

输出:

{'b': 2, 'a': 1, 'c': 3, 'd': 4}

答案 1 :(得分:4)

为什么不打印字典?使用zip制作对的元组,然后将它们传递给dict constructor

print(dict(zip(self.keys, self.values)))

答案 2 :(得分:1)

如果您想通过一行代码获得原始代码所生成的格式,您可以使用

from itertools import starmap

print("{%s}" % ",".join(starmap("{}:{}".format, zip(keys, values))))

我不确定这比原始代码更具可读性。