如何更优雅地将一对键值对的字典解包为两个变量?
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'
>>>
不确定我喜欢哪一个,最后一个如果我扫一眼可能会有点难以阅读。
注意,这里的优点是它是非破坏性的,如果字典有多个键值对,它就会失败。
目前,我正在使用这个:
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'
>>>
不确定我喜欢哪一个,最后一个如果我扫一眼可能会有点难以阅读。
注意,这里的优点是它是非破坏性的,如果字典有多个键值对,它就会失败。