gpt4 book ai didi

python - 打印字符串时数字字典键作为占位符?

转载 作者:行者123 更新时间:2023-12-04 00:54:25 24 4
gpt4 key购买 nike

我有以下代码:

board_dic = {
0: '_',
1: '_',
2: '_',
3: '_',
4: '_',
5: '_',
6: '_',
7: '_',
8: '_',
}

print("|{0}|{1}|{2}|\n|{3}|{4}|{5}|\n|{6}|{7}|{8}|".format(**board_dic)

运行时的输出为:

line 28, in <module>
print("|{0}|{1}|{2}|\n|{3}|{4}|{5}|\n|{6}|{7}|{8}|".format(**board_dic))
IndexError: Replacement index 0 out of range for positional args tuple

我在任何地方都找不到这个问题的解决方案。如果我要将 board_dic 中的键替换为字符串,例如 'a''b''c'等,并将打印语句中的占位符替换为'a''b''c'等。那么我的打印语句将毫无问题地执行。但是,问题似乎特别出在数字键字典值上。

为什么会这样,我该如何解决?

最佳答案

如果您知道要查找的内容,请参阅 here :

The field_name itself begins with an arg_name that is either a number or a keyword. If it’s a number, it refers to a positional argument, and if it’s a keyword, it refers to a named keyword argument. If the numerical arg_names in a format string are 0, 1, 2, … in sequence, they can all be omitted (not just some) and the numbers 0, 1, 2, … will be automatically inserted in that order. Because arg_name is not quote-delimited, it is not possible to specify arbitrary dictionary keys (e.g., the strings '10' or ':-]') within a format string.

简单来说,'{0} {1}'.format(...) 的意思是“用第一个位置参数和 替换 {0} >{1}format(...) 的第二个位置参数。

位置参数是那些在函数调用中没有指定参数名称的参数。例如在 format(1, 2, c=3) 中,12 是位置参数,c=3 是关键字参数。

但是 **board_dic 语法指定了关键字参数! format(**board_dic) 等同于 format(0='_', 1='_', 2='_', ...) 1 并且没有位置参数。因此,使用{0}{1}{2}等,得到第一、第二、第三等。 ,位置参数,失败。

为了将带有整数键的字典传递给format,你可以使用这个:

print("|{d[0]}|{d[1]}|{d[2]}|\n|...".format(d=board_dic))

1不允许数字作为关键字是另一个问题。

关于python - 打印字符串时数字字典键作为占位符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63727350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com