在 Python 3 中获取 OrderedDict
第一项的最短方法是什么?
我最好的:
list(ordered_dict.items())[0]
又长又丑。
我能想到的:
next(iter(ordered_dict.items())) # Fixed, thanks Ashwini
但它不是很 self 描述。
有更好的建议吗?
最佳答案
可读性编程实践
一般来说,如果您觉得代码不是自描述的,通常的解决方案是将其分解为一个命名良好的函数:
def first(s):
'''Return the first element from an ordered collection
or an arbitrary element from an unordered collection.
Raise StopIteration if the collection is empty.
'''
return next(iter(s))
有了 helper function ,后面的代码就变得非常可读了:
>>> extension = {'xml', 'html', 'css', 'php', 'xhmtl'}
>>> one_extension = first(extension)
从集合中提取单个值的模式
从 set、dict、OrderedDict、生成器或其他不可索引的集合中获取元素的常用方法是:
for value in some_collection:
break
和:
value = next(iter(some_collection))
后者很好,因为 next() 函数允许您在集合为空时指定默认值,或者您可以选择让它引发异常。 next() 函数也明确表示它正在请求下一项。
替代方法
如果你确实需要索引和切片等序列行为(比如索引多个元素),用list(some_collection)
转换成列表或者使用都是简单的事情[itertools.islice()][2]
:
s = list(some_collection)
print(s[0], s[1])
s = list(islice(n, some_collection))
print(s)
关于python - 在 Python 3 中获取第一项 `OrderedDict` 的最短方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21062781/