Python 3 一行用于 2 列表字符串格式?
Python 3 one-liner for 2 lists string format?
我在 python3 Class 中有 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]
一行可以吗?如果没有,有更好的方法吗?
为什么不打印字典呢?使用 zip to make tuples of the pairs, then pass them to the dict constructor.
print(dict(zip(self.keys, self.values)))
使用zip and then make it a dict:
keys = ["a","b","c","d"]
values = [1,2,3,4]
dict(zip(keys, values))
输出:
{'b': 2, 'a': 1, 'c': 3, 'd': 4}
如果您想通过一行代码获得原始代码生成的格式,您可以使用
from itertools import starmap
print("{%s}" % ",".join(starmap("{}:{}".format, zip(keys, values))))
虽然我不确定这是否比您的原始代码更具可读性。
我在 python3 Class 中有 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]
一行可以吗?如果没有,有更好的方法吗?
为什么不打印字典呢?使用 zip to make tuples of the pairs, then pass them to the dict constructor.
print(dict(zip(self.keys, self.values)))
使用zip and then make it a dict:
keys = ["a","b","c","d"]
values = [1,2,3,4]
dict(zip(keys, values))
输出:
{'b': 2, 'a': 1, 'c': 3, 'd': 4}
如果您想通过一行代码获得原始代码生成的格式,您可以使用
from itertools import starmap
print("{%s}" % ",".join(starmap("{}:{}".format, zip(keys, values))))
虽然我不确定这是否比您的原始代码更具可读性。