当前位置: 首页 > 面试题库 >

使用字典键(此键是数字的str())将字符串格式化[str.format()]

诸修伟
2023-03-14
问题内容

这里是Python新手。我想知道是否有人可以KeyError在使用字典进行字符串插值时得到帮助str.format

dictionary = {'key1': 'val1', '1': 'val2'}

string1 = 'Interpolating {0[key1]}'.format(dictionary)
print string1

上面的工作正常,并产生:

Interpolating val1

但是,请执行以下操作:

dictionary = {'key1': 'val1', '1': 'val2'}

string2 = 'Interpolating {0[1]}'.format(dictionary)
print string2

结果是:

Traceback (most recent call last):
  File "test.py", line 3, in <module>
    string2 = 'Interpolating {0[1]}'.format(dictionary)
KeyError: 1L

因此,问题似乎出在将数字键解释为列表索引恕我直言。 有什么办法可以解决此问题? (即表示这是一个字典键)

如果您曾经问​​过这个问题,TIA表示歉意(找不到与我的搜索相关的任何内容)。

编辑1:密钥不是前面错误指出的数字。相反,它是数字的字符串表示形式-
正如BrenBarn所指出的那样。


问题答案:

否。根据文档:

由于arg_name不是用引号引起来的,因此无法在格式字符串中指定任意字典键(例如,字符串‘10’或’:-]’)。

因此,您不能使用由数字组成的字符串作为格式字符串中的字典键。

请注意,您的键不是数字,也不是试图将其用作列表索引。您的密钥是一个碰巧包含数字字符的字符串。它要执行的操作是使用数字1(而不是html" target="_blank">字符串“
1”)作为字典键。如果您将数字1用作字典键(即,使dict起作用),它将起作用{'key1': 'val1', 1: 'val2'}



 类似资料:
  • 问题内容: 我的问题与这一问题非常相似,除了我有一个列表字典,而且我有兴趣将键值和每个列表形式中的所有元素都更改为。 因此,例如,我想要字典: 成为: 这可能吗? 由于我是从格式文件创建此字典的,因此更一般 具有以下说明: 有没有一种方法可以在加载时直接进行? 问题答案: 用于值列表 在您的情况下: 要么

  • 本文向大家介绍VBA 使用格式将数字类型转换为字符串并将其格式化为字符串,包括了VBA 使用格式将数字类型转换为字符串并将其格式化为字符串的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 问题内容: 这个问题与Python类似-在字典中查找最长(最多单词)键-但我需要纯字符数。 输入示例: 输出: 问题答案: 替代方法,与@jamylak的解决方案一样快,并且使用更多的pythonic: 查看比较:

  • 问题内容: 在此页面上,我看到了一些有趣的东西: 请注意,有一种快速的命令可以(实际上)仅处理str键。 这不会影响算法的复杂性,但是会显着影响以下恒定因素:典型程序完成的速度。 那到底是什么意思呢? 这是否意味着使用字符串作为键总是更快? 如果是,为什么? 更新: 感谢您提供有关优化的建议!但实际上,我对简单的事实更感兴趣,而不是是否或何时进行优化。 更新2: 感谢您的出色回答,在这里我将引用@

  • 问题内容: 我需要找出如何将数字格式化为字符串。我的代码在这里: 小时和分钟是整数,而秒是浮点数。str()函数会将所有这些数字转换为十分之几(0.1)。因此,而不是我的字符串输出“ 5:30:59.07 pm”,它将显示类似“ 5.0:30.0:59.1 pm”的内容。 最重要的是,我需要为我执行什么库/函数? 问题答案: 从Python 3.6开始,可以使用格式化的字符串文字或 f-strin

  • 问题内容: 我非常喜欢使用字典来格式化字符串。它可以帮助我阅读所使用的字符串格式,也可以利用现有的字典。例如: 但是我不能弄清楚这样做的python 3.x语法(或者甚至是可能的)。我想做以下 问题答案: 由于问题是特定于Python 3的,因此这里使用的是从Python 3.6开始可用的新f字符串语法: 注意外部单引号和内部双引号(您也可以采用其他方法)。