热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何从OrderedDict获取子集?

我在Python中有一个OrderedDict,我只想获得第一个键值对。如何获得?例如,要获取前4个元素,我执行了以下操作:subdict={}f

我在 Python 中有一个 OrderedDict,我只想获得第一个键值对。如何获得?例如,要获取前 4 个元素,我执行了以下操作:

subdict = {}
for index, pair in enumerate(my_ordered_dict.items()):
if index <4:
subdict[pair[0]] = pair[1]

这是这样做的好方法吗?

回答



这种方法涉及遍历整个字典,即使您只需要前四个元素,一遍又一遍地检查索引,手动解包成对,以及不必要地手动执行索引检查。

使它短路很容易:

subdict = {}
for index, pair in enumerate(my_ordered_dict.items()):
if index >= 4:
break # Ends the loop without iterating all of my_ordered_dict
subdict[pair[0]] = pair[1]

您可以嵌套解包以获得更好的名称:

subdict = {}
# Inner parentheses mandatory for nested unpacking
for index, (key, val) in enumerate(my_ordered_dict.items()):
if index >= 4:
break # Ends the loop
subdict[key] = value

但你可以提升这个与itertools.islice删除手动指数检查:

from itertools import islice # At top of file
subdict = {}
# islice lazily produces the first four pairs then stops for you
for key, val in islice(my_ordered_dict.items(), 4):
subdict[key] = value

在这一点上,您实际上可以将整个事情单行化(因为现在您有一个正好包含您想要的四对dict的可迭代对象,并且构造函数接受一个可迭代对象):

subdict = dict(islice(my_ordered_dict.items(), 4))






推荐阅读
author-avatar
日蕾文散Lotus
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有