Python 将字典列表扩展为格式化字符串列表的方法
我遇到了使用子流程模块调用外部可执行文件的需求。一切正常,但是我想改进生成命令行参数的方式 可执行文件的命令行选项需要如下格式: --argname=argvalue 我目前有一个字典列表,如下所示: [{arg1:value1},{arg2:value2}] 将这些词典扩展为适当的字符串格式的最佳方法是什么?我目前正在迭代该列表,将其添加到另一个列表中,但它认为我应该使用一种更具python风格的方法。使用Python 将字典列表扩展为格式化字符串列表的方法,python,Python,我遇到了使用子流程模块调用外部可执行文件的需求。一切正常,但是我想改进生成命令行参数的方式 可执行文件的命令行选项需要如下格式: --argname=argvalue 我目前有一个字典列表,如下所示: [{arg1:value1},{arg2:value2}] 将这些词典扩展为适当的字符串格式的最佳方法是什么?我目前正在迭代该列表,将其添加到另一个列表中,但它认为我应该使用一种更具python风格的方法。使用items(),如中所示 使用中的items() 怎么样 def format_dict
items()
,如中所示
使用中的items()
怎么样
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
怎么样
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
基本上,这会迭代列表中的每个字典(用于arg_列表中的d
),然后迭代每个字典中的项(用于d.items()中的k,v)。将每个项目格式化为正确的格式,然后将所有这些键值对组合在一起
这相当于:
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)
基本上,这会迭代列表中的每个字典(用于arg_列表中的d
),然后迭代每个字典中的项(用于d.items()中的k,v)。将每个项目格式化为正确的格式,然后将所有这些键值对组合在一起
这相当于:
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)
试试这个
','.join('{}={}'.format(k, v) for d in arg_list for k, v in d.items())
试试这个
','.join('{}={}'.format(k, v) for d in arg_list for k, v in d.items())
请包括你自己的代码,这给了我们更多的上下文。请包括你自己的代码,这给了我们更多的上下文。我接受了你的答案,因为它似乎最符合问题的精神。map命令是我想到的,但我想不起来了。我接受了你的回答,因为它似乎最符合问题的精神。map命令是我想到的,但我想不起来了。谢谢你的回答。另一个答案中的map()命令正是我想要的,但是我觉得您正在确认我当前的方法没有银弹,也没有本质上的错误。谢谢您的回答。另一个答案中的map()命令正是我所寻找的,但是我觉得您正在确认我当前的方法没有银弹,也没有本质上的错误。