我需要使用子进程模块调用外部可执行文件。一切都很好,但是我想改进我生成命令行参数的方式。
可执行文件的命令行选项需要格式化如下: --argname = argvalue
我目前有一个字典列表如下: [{ARG1:VALUE1},{ARG2:VALUE2}]
将这些词典扩展为正确的字符串格式的最佳方法是什么?我目前正在迭代列表,附加到不同的列表,但是我觉得我应该使用更加pythonic的方法。
答案 0 :(得分:1)
items()
for key,val in d.items():
print("{} = {}".format(key, val))
答案 1 :(得分:1)
' '.join('--{key}={value}'.format(key = k, value = v) for d in arg_list for k, v in d.items())
本质上,这会迭代列表中的每个字典(for d in arg_list
),然后遍历每个字典中的项目(for k, v in d.items()
)。每个项目都被格式化为正确的形式,然后组合所有这些键值对。
相当于:
arg_list = [{arg1:value1},{arg2:value2}]
formatted_args = []
for d in arg_list:
for k, v in d.items():
# Format each item per dictionary
formatted_args.append('--{key}={value}'.format(key = k, value = v))
# Combine the arguments into one string
args_string = ' '.join(formatted_args)
答案 2 :(得分:1)
试试这个
','.join('{}={}'.format(k, v) for d in arg_list for k, v in d.items())
答案 3 :(得分:0)
怎么样
def format_dict(d):
key = d.keys()[0]
return '--%s=%s' % (key, d[key])
ex = [{'a':'3'}, {'b':'4'}]
print ' '.join(map(format_dict, ex)) # --a=3 --b=4