如何更优雅地将一个键值对的dict解包成两个变量?

2024-04-26 20:50:59 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我正在使用:

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

这里需要星号表达式,因为省略它会导致list函数/构造函数返回一个包含键和值的单元组列表。你知道吗

不过,我想知道有没有更好的方法。你知道吗


Tags: 方法函数列表表达式items星号list省略
3条回答

如果你不介意把字典改一下,这个就可以了:

k, v = d.popitem()

保持嵌套:

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

或等效地:

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

不知道我喜欢哪一个,最后一个可能有点难以阅读,如果我是瞥了一眼。你知道吗

注意,这里的优点是它是非破坏性的,如果dict有多个键值对,它就会失败。你知道吗

由于dict项不支持索引访问,因此可以对第一个(也是唯一一个)项进行以下非变异检索:

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

这样做的好处是,它不仅适用于任何大小的dict,而且还保留了O(1)操作,而其他解包项或将其转换为列表的解决方案不会这样做。你知道吗

相关问题 更多 >