m01*_*011 2 python dictionary python-3.x iterable-unpacking
目前,我正在使用此:
d = {'a': 'xyz'}
k, v = list(*d.items())
Run Code Online (Sandbox Code Playgroud)
这里需要加星号的表达式,因为省略它会使列表函数/构造函数返回带有单个元组的列表,该元组包含键和值。
但是,我想知道是否有更好的方法可以做到这一点。
由于dict项目不支持索引访问,因此您可以诉诸于第一个(也是唯一的)项目的以下非变异检索:
k, v = next(iter(d.items()))
Run Code Online (Sandbox Code Playgroud)
这样做的优点是,不仅可以处理任何大小的字典,而且还保留了O(1)其他操作,而将其他项目解压缩或将其转换为列表则不会。
保持嵌套:
>>> d = {'a': 'xyz'}
>>> ((k,v),) = d.items()
>>> k
'a'
>>> v
'xyz'
Run Code Online (Sandbox Code Playgroud)
或等效地:
>>> (k,v), = d.items()
>>> k
'a'
>>> v
'xyz'
>>>
Run Code Online (Sandbox Code Playgroud)
不确定我喜欢哪一个,如果我看一眼,可能很难阅读最后一个。
注意,这里的优点是它是非破坏性的,并且如果dict有多个键值对,则失败。