Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将字典列表扩展为格式化字符串列表的方法_Python - Fatal编程技术网

Python 将字典列表扩展为格式化字符串列表的方法

Python 将字典列表扩展为格式化字符串列表的方法,python,Python,我遇到了使用子流程模块调用外部可执行文件的需求。一切正常,但是我想改进生成命令行参数的方式 可执行文件的命令行选项需要如下格式: --argname=argvalue 我目前有一个字典列表,如下所示: [{arg1:value1},{arg2:value2}] 将这些词典扩展为适当的字符串格式的最佳方法是什么?我目前正在迭代该列表,将其添加到另一个列表中,但它认为我应该使用一种更具python风格的方法。使用items(),如中所示 使用中的items() 怎么样 def format_dict

我遇到了使用子流程模块调用外部可执行文件的需求。一切正常,但是我想改进生成命令行参数的方式

可执行文件的命令行选项需要如下格式: --argname=argvalue

我目前有一个字典列表,如下所示: [{arg1:value1},{arg2:value2}]

将这些词典扩展为适当的字符串格式的最佳方法是什么?我目前正在迭代该列表,将其添加到另一个列表中,但它认为我应该使用一种更具python风格的方法。

使用
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()命令正是我所寻找的,但是我觉得您正在确认我当前的方法没有银弹,也没有本质上的错误。