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(至少)在通过字典解包传递关键字参数时对其允许的内容过于宽容。例如,dictfoo={'three stooges:['moe'、'larry'、'Curly']}
可以通过函数(**foo)传递给接受**kwargs
的函数
@Aya编辑了这个问题。@mgilson+1很有意思。我不知道。@Aya--这是一个“优化”。它会检查以确保所有键都是字符串,因为这很便宜。它不会检查以确保所有字符串都是有效标识符,因为这样会很昂贵。