我是靠谱客的博主 傻傻秋天,最近开发中收集的这篇文章主要介绍pythonorderdict访问,在Python OrderedDict中获取关键索引?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

I have a collections.OrderedDict with a list of key, value pairs. I would like to compute the index i such that the ith key matches a given value. For example:

food = OrderedDict([('beans',33),('rice',44),('pineapple',55),('chicken',66)])

I want to go from the key chicken to the index 3, or from the key rice to the index 1. I can do this now with

food.keys().index('rice')

but is there any way to leverage the OrderedDict's ability to look things up quickly by key name? Otherwise it seems like the index-finding would be O(N) rather than O(log N), and I have a lot of items.

I suppose I can do this manually by making my own index:

>>> foodIndex = {k:i for i,k in enumerate(food.keys())}

>>> foodIndex

{'chicken': 3, 'rice': 1, 'beans': 0, 'pineapple': 2}

but I was hoping there might be something built in to an OrderedDict.

解决方案

Basically, no. OrderedDict gets its ability to look things up quickly by key name just by using a regular, unordered dict under the hood. The order information is stored separately in a doubly linked list. Because of this, there's no way to go directly from the key to its index. The order in an OrderedDict is mainly intended to be available for iteration; a key does not "know" its own order.

最后

以上就是傻傻秋天为你收集整理的pythonorderdict访问,在Python OrderedDict中获取关键索引?的全部内容,希望文章能够帮你解决pythonorderdict访问,在Python OrderedDict中获取关键索引?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部