我有以下 TOML:[gps]measurement = "gps"tags = ["lat", "lon", "alt"]limit = 10它在 Python 中转换为以下字典:{ "gps": { "measurement": "gps", "tags": [ "lat", "lon", "alt"], "limit": 10}我有一个类,我希望在其中创建一个成员函数read_gps,如下所示:获得**kwargs从上面字典目前,只需打印以下字符串: select "lat", "lon", "alt", from "gps" limit 10代码class dbClass: def __init__(self, db=None, **kwargs): self.kwargs = kwargs # this kwargs is different from the above kwargs # do some initialization stuff here def read_gps(self, **kwargs): # pass the above mentioned dict here # instance_dbClass.read_gps(gps_dict) _data = kwargs _tags = kwargs.get('tags') print('select "{}","{}","{}" from "{}" limit {}'.format(*_tags, _data.get('measurement'), _data.get('limit')) )但我收到以下错误:SyntaxError: only named arguments may follow *expression相反,如果我删除它measurement,limit它会正常工作。实现这一目标的pythonic方法是什么?我应该创建两个不同的字符串,然后最后将它们连接起来吗?审判query = """ select "{}", "{}", "{}" from "{}" limit {} """.format(_tags[0], _tags[1], _tags[2], _data.get('measurement'), _data.get('limit'))print(query)工作但是它有一种方法可以在其他值中使用*元组的解包.format()
2 回答
慕沐林林
TA贡献2016条经验 获得超9个赞
您的代码将在 Python 3.5+ 版本中运行,遵循Pep 448。如果必须使用低于 3.5 的版本,可以使用命名参数:
print(select "{}","{}","{}" from "{measurement}" limit {limit}'.format(*_tags, measurement=measurement, limit=limit))
或者,_tags
先将加入单个字符串:
print('select "{}" from "{}" limit {}'.format('","'.join(_tags), measurement, limit))
即使长度发生_tags
变化,第二个选项也将起作用。
添加回答
举报
0/150
提交
取消