如何提取 dict 值并设置为 int 变量?

How to extract dict values and set as int variable?

我想做的是提取字典的值来用它做计算。我的字典只有一个值。但是我无法使用字典值进行计算 (+-*/),而且我找不到将值分配给 int 变量的方法。

a = {'number': 5}
b = a.values()
c = b*3
print(c)

代码产生错误:

TypeError: unsupported operand type(s) for *: 'dict_values' and 'int'

a.values() returns 所有字典的值作为dict_values.

当然,在你的情况下这只是一个值,但它仍然是那种形式。

在这种情况下可行的一件事:

a = {'number': 5}
b = a.values()
c = list(b)[0]*3
print(c)

dict_values 本身是字典值的 so-called 视图,原因有点太复杂,无法在此处介绍 - 但因此无法直接对其进行索引,所以 c = b[0]*3 也行不通。

相反,dict_values 通过将其传递给 list() 函数转换为 list,该函数接受任何可迭代对象(如 dict_values)并创建一个从中列出。并且 list 可以 进行索引,因此 list(b)[0]*3 获取值列表,select 第一个 ([0]) 元素,并且乘以 3.

但更有意义的是:

a = {'number': 5}
b = a['number']
c = b*3

这只是按预期使用字典,并通过使用键 a['number'].

索引字典来 select 得到 'number'

或:

a = {'number': 5}
b = list(a.values())
c = [x*3 for x in b]

由于字典 可以 有多个值,您还可以获取值列表并将每个元素分别乘以 3。但结果必须是另一个集合,像这样 list.

此外,如果您不想使用列表或列表理解,您可以简单地使用:

a = {'number': 5}
for x in a.values():
   b=int(x)
c = b*3

或者正如我评论的那样:

a = {'number': 5}
b = a['number']
c = b*3