繁体   English   中英

"在 Python 中将 ONE 元素字典转换为 ONE 元组的快捷方式"

[英]Shortcut to turn a ONE element dict into ONE tuple in Python

将具有一定数量元素的 Python dict 转换为元组列表有很多问题。 我正在寻找一种将单元素字典转换为元组的捷径。

理想情况下,它将:

  1. 惯用且简单(即,不是dict的子类,不是函数等)。
  2. 如果字典中有多个元素,则抛出错误。
  3. 支持通过元组解包进行多重赋值。
  4. 不破坏dict

我正在寻找一个捷径来做到这一点(这对字典没有破坏性):

k,v=unpack_this({'unknown_key':'some value'})

*在这里不起作用。

我想出了这些有效的方法:

k,v=next(iter(di.items()))   # have to call 'iter' since 'dict_items' is not

或者:

k,v=(next(((k,v) for k,v in di.items())))

甚至:

k,v=next(zip(di.keys(), di.values()))

最后,能想到的最好的:

k,v=list(di.items())[0]      # probably the best...

如果我想要长度检查,可以将其包装到一个函数中:

def f(di):
    if (len(di)==1): return list(di.items())[0]
    raise ValueError(f'Too many items to unpack. Expected 2, got {len(di)*2}')

这些方法看起来超级笨拙,如果有多个元素,都不会抛出错误。

我是否缺少惯用的快捷方式?

>>> d = {'a': 1}
>>> d.popitem()
('a', 1)

为什么不 :

next(iter(d.items())) if len(d)==1 else (None,None)

@chepner 对.popitem()<\/code>有正确的方法:

>>> d = {'a': 1}
>>> d.popitem()
('a', 1)        # d is now {}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM