将多个值插入字符串

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().

然后可以使用展开赋值将sourceparameter变量设置为每个列表的两个元素。

如果要用 {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():
   ...

这将只遍历值(在您的例子中是列表)并将每个列表扩展到 sourceparameter 变量中,因为每个列表恰好有两个元素。您必须注意字典中每个列表中的项目不要少于 2 个,否则会导致运行时错误。

此外,请注意 values()items() 方法 return 都是迭代器(生成器),而不是列表。