Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何构造包含无效关键字参数的键的字典,而不是使用{}_Python - Fatal编程技术网

Python 如何构造包含无效关键字参数的键的字典,而不是使用{}

Python 如何构造包含无效关键字参数的键的字典,而不是使用{},python,Python,如果使用{}仅仅是创建dict的快捷方式,请使用dict()。因此我想知道如何创建一个dict,其中包含无效关键字参数的键,如1,“1foo2bar3”等,而不使用大括号或方括号(参考下面的代码)并坚持dict() 以下代码不是选项: a = dict() a[1] = 1 你的意思是使用默认的dict构造函数来创建字典 >>> a = dict((x, x) for x in range(10)) >>> a {0: 0, 1: 1, 2: 2, 3: 3

如果使用
{}
仅仅是创建
dict
的快捷方式,请使用
dict()
。因此我想知道如何创建一个
dict
,其中包含无效关键字参数的键,如
1
“1foo2bar3”
等,而不使用大括号或方括号(参考下面的代码)并坚持
dict()

以下代码不是选项:

a = dict()
a[1] = 1

你的意思是使用默认的dict构造函数来创建字典

>>> a = dict((x, x) for x in range(10))
>>> a
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9}
它获取一个元组集合,并将其转换为一个字典,通常与上面的生成器表达式相结合——但您也可以为它提供一个事先准备好的元组集合

>>> dict([(1, 1), ('a', 'a')])
{'a': 'a', 1: 1}
使用您的示例:

>>> dict([(1, None), ("1foo", None), ("foo2bar3", None)])
{1: None, '1foo': None, 'foo2bar3': None}
{}
不是
dict()的“简单”快捷方式。除了长度差异外,这也是性能方面的捷径


最好使用字典文本,除非您需要支持不包含字典文本的非常旧的Python版本,或者您正在使用Python<2.7的版本进行某种列表或其他理解来构建dict(因为低于2.7的Python版本不支持dict理解[即
{x:y代表x,y在某些{iterable}
],我相信)。

zip
也是获取
(键,值)
元组的iterable的常用方法:
dict(zip(键,值))
这些都是有效的键,
“foo2bar3”
是有效的关键字参数。我不明白您在这里想要实现什么。还要注意,Cpython(至少)在通过字典解包传递关键字参数时对其允许的内容过于宽容。例如,dict
foo={'three stooges:['moe'、'larry'、'Curly']}
可以通过
函数(**foo)传递给接受
**kwargs
的函数
@Aya编辑了这个问题。@mgilson+1很有意思。我不知道。@Aya--这是一个“优化”。它会检查以确保所有键都是字符串,因为这很便宜。它不会检查以确保所有字符串都是有效标识符,因为这样会很昂贵。