如何更优雅地将一对键值对的字典解包为两个变量?

How to unpack dict with one key-value pair to two variables more elegantly?

目前,我正在使用这个:

d = {'a': 'xyz'}
k, v = list(*d.items())

这里需要带星号的表达式,因为省略它会导致列表 function/constructor 到 return 一个包含单个元组的列表,其中包含键和值。

但是,我想知道是否有更好的方法。

如果您不介意字典被修改,这样做就可以:

k, v = d.popitem()

由于 dict 项不支持索引访问,您可以求助于第一个(也是唯一一个)项的以下非变异检索:

k, v = next(iter(d.items()))

这样做的好处是不仅适用于任何大小的字典,而且还保留了一个 O(1) 操作,而其他解压项目或将它们转换为列表的解决方案则不会。

继续嵌套:

>>> d = {'a': 'xyz'}
>>> ((k,v),) = d.items()
>>> k
'a'
>>> v
'xyz'

或等效地:

>>> (k,v), = d.items()
>>> k
'a'
>>> v
'xyz'
>>>

不确定我喜欢哪一个,最后一个如果我扫一眼可能会有点难以阅读。

注意,这里的优点是它是非破坏性的,如果字典有多个键值对,它就会失败。