[英]Shortcut to turn a ONE element dict into ONE tuple in Python
将具有一定数量元素的 Python dict 转换为元组列表有很多问题。 我正在寻找一种将单元素字典转换为元组的捷径。
理想情况下,它将:
dict
的子类,不是函数等)。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.