python - 在 Python 3 中获取第一项 `OrderedDict` 的最短方法

标签 python python-3.x indexing iterable

在 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)

从集合中提取单个值的模式

setdictOrderedDict、生成器或其他不可索引的集合中获取元素的常用方法是:

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/

相关文章:

python - 如何使用 matplotlib.pyplot 更改表格的字体大小

Python,如何根据总和对列表进行排序

python - 正则表达式 '^[abc]+$' 未按预期工作

performance - MongoDB 索引定义策略

创建从字典键到它的值的所有组合的 Pythonic 方法

python - Django FileField 存储选项

Python And Or 语句的行为..很奇怪

python - 如何将函数列表组合成可调用对象

java - 如何将 Apache-Solr 服务器作为后台进程运行?

matlab: "Index of element to remove exceeds matrix dimensions."当我不删除任何元素时