将多个值插入字符串
Inserting multiple values into a string
我正在尝试 运行 此命令,但每次我 运行 此命令时都需要插入两个新变量。我认为正确的方法是遍历字典并在每个循环中添加两个变量。我从来没有遍历过每个键有多个值的字典。让我知道是否还有其他方法可以考虑。
sample_dict = {key0: ['source0','parameter0'],
key1: ['source1','parameter1'],
key2: ['source2','parameter2'],
key3: ['source3','parameter3']}
for values in sample_dict:
example_cmd = "set -a; source ~/.bash_profile; python3 $path/file.py \
--dbtype db --config-dir $CONFIG_DIR \
--db-conn-config-file db.conf \
--sqlfile $path/{source} \
--params {parameter}"
example_cmd
您正在循环键,而不是值。您需要遍历 sample_dict.values()
.
然后可以使用展开赋值将source
和parameter
变量设置为每个列表的两个元素。
如果要用 {variable}
替换变量,则需要使用 f-string.
for source, parameter in sample_dict.values():
example_cmd = f"set -a; source ~/.bash_profile; python3 $path/file.py \
--dbtype db --config-dir $CONFIG_DIR \
--db-conn-config-file db.conf \
--sqlfile $path/{source} \
--params {parameter}"
我不确定您到底想要实现什么,但是按照您的方式遍历字典实际上会遍历键,而不是值。要迭代值,您可以使用:
for value in sample_dict.values():
...
要对两者进行迭代,请使用:
for key, value in sample_dict.items():
...
在你的具体情况下,你可以这样做:
for source, parameter in sample_dict.values():
...
这将只遍历值(在您的例子中是列表)并将每个列表扩展到 source
和 parameter
变量中,因为每个列表恰好有两个元素。您必须注意字典中每个列表中的项目不要少于 2 个,否则会导致运行时错误。
此外,请注意 values()
和 items()
方法 return 都是迭代器(生成器),而不是列表。
我正在尝试 运行 此命令,但每次我 运行 此命令时都需要插入两个新变量。我认为正确的方法是遍历字典并在每个循环中添加两个变量。我从来没有遍历过每个键有多个值的字典。让我知道是否还有其他方法可以考虑。
sample_dict = {key0: ['source0','parameter0'],
key1: ['source1','parameter1'],
key2: ['source2','parameter2'],
key3: ['source3','parameter3']}
for values in sample_dict:
example_cmd = "set -a; source ~/.bash_profile; python3 $path/file.py \
--dbtype db --config-dir $CONFIG_DIR \
--db-conn-config-file db.conf \
--sqlfile $path/{source} \
--params {parameter}"
example_cmd
您正在循环键,而不是值。您需要遍历 sample_dict.values()
.
然后可以使用展开赋值将source
和parameter
变量设置为每个列表的两个元素。
如果要用 {variable}
替换变量,则需要使用 f-string.
for source, parameter in sample_dict.values():
example_cmd = f"set -a; source ~/.bash_profile; python3 $path/file.py \
--dbtype db --config-dir $CONFIG_DIR \
--db-conn-config-file db.conf \
--sqlfile $path/{source} \
--params {parameter}"
我不确定您到底想要实现什么,但是按照您的方式遍历字典实际上会遍历键,而不是值。要迭代值,您可以使用:
for value in sample_dict.values():
...
要对两者进行迭代,请使用:
for key, value in sample_dict.items():
...
在你的具体情况下,你可以这样做:
for source, parameter in sample_dict.values():
...
这将只遍历值(在您的例子中是列表)并将每个列表扩展到 source
和 parameter
变量中,因为每个列表恰好有两个元素。您必须注意字典中每个列表中的项目不要少于 2 个,否则会导致运行时错误。
此外,请注意 values()
和 items()
方法 return 都是迭代器(生成器),而不是列表。