dict(**kwargs) 总是给出键为字符串类型的字典吗?
Will dict(**kwargs) always give dictionary where Keys are of type string?
注意 :这是 不是 linked answer 的副本,它侧重于与性能相关的问题,以及什么当进行 dict() 函数调用时,会在幕后发生。我的问题是关于关键字参数总是导致 string
类型的键。绝对不是重复的。
方法一:
suit_values = {'spades':3, 'hearts':2, 'diamonds':1, 'clubs':0}
方法二:
suit_values = dict(spades=3, hearts=2, diamonds=1, clubs=0)
方法 1 对我来说很有意义。这就像告诉 python 给我一本字典,其中 键是字符串 而 值是数字 。但是在方法 2 中,python 怎么知道键是字符串而不是其他东西?
这是趋势吗?如果是这样,还有其他一些例子(除了字典)显示这种行为吗?
EDIT-1 :
我对答案的理解是:
- 方法 2 是
dict(**kwargs)
创建字典的方法。
- 在
spades=3
中,spades
是一个有效的Python标识符,因此被当作string
[=50=类型的key ] 。
那么,dict(**kwargs)
总是 会导致字典的键类型为 string
吗?
EDIT-2:^^ 是。
在第二种情况下,dict
函数接受关键字参数。关键字参数只能作为字符串参数传递。
引用 documentation,
Providing keyword arguments as in the first example only works for keys that are valid Python identifiers. Otherwise, any valid keys can be used.
只要该字符串是有效的 python 标识符,您就可以将其用作第二种形式的键。例如,以下将不适用于第二种形式
>>> dict(1=2)
File "<input>", line 1
SyntaxError: keyword can't be an expression
但第一种形式同样适用
>>> {1:2}
{1: 2}
方法 1,文字字典表达式,可以使用任何可散列值作为键,例如字符串、整数或 tuple
s。
方法 2 - dict()
内置函数 - 不会 "know" 键是字符串。无论您在该方法中使用什么键,都必须遵循传统的变量命名约定,才能转换为字符串。这意味着每个键必须以字母或下划线开头,只能包含字母、下划线或数字等。尝试不同的密钥,如 2a
或 (1,2)
,将失败。
注意 :这是 不是 linked answer 的副本,它侧重于与性能相关的问题,以及什么当进行 dict() 函数调用时,会在幕后发生。我的问题是关于关键字参数总是导致 string
类型的键。绝对不是重复的。
方法一:
suit_values = {'spades':3, 'hearts':2, 'diamonds':1, 'clubs':0}
方法二:
suit_values = dict(spades=3, hearts=2, diamonds=1, clubs=0)
方法 1 对我来说很有意义。这就像告诉 python 给我一本字典,其中 键是字符串 而 值是数字 。但是在方法 2 中,python 怎么知道键是字符串而不是其他东西?
这是趋势吗?如果是这样,还有其他一些例子(除了字典)显示这种行为吗?
EDIT-1 :
我对答案的理解是:
- 方法 2 是
dict(**kwargs)
创建字典的方法。 - 在
spades=3
中,spades
是一个有效的Python标识符,因此被当作string
[=50=类型的key ] 。
那么,dict(**kwargs)
总是 会导致字典的键类型为 string
吗?
EDIT-2:^^ 是。
在第二种情况下,dict
函数接受关键字参数。关键字参数只能作为字符串参数传递。
引用 documentation,
Providing keyword arguments as in the first example only works for keys that are valid Python identifiers. Otherwise, any valid keys can be used.
只要该字符串是有效的 python 标识符,您就可以将其用作第二种形式的键。例如,以下将不适用于第二种形式
>>> dict(1=2)
File "<input>", line 1
SyntaxError: keyword can't be an expression
但第一种形式同样适用
>>> {1:2}
{1: 2}
方法 1,文字字典表达式,可以使用任何可散列值作为键,例如字符串、整数或 tuple
s。
方法 2 - dict()
内置函数 - 不会 "know" 键是字符串。无论您在该方法中使用什么键,都必须遵循传统的变量命名约定,才能转换为字符串。这意味着每个键必须以字母或下划线开头,只能包含字母、下划线或数字等。尝试不同的密钥,如 2a
或 (1,2)
,将失败。