python - 如何将 dict_keys 转换为整数
问题描述
我有一个字典,其中的键是整数,并且是按顺序排列的。有时,我需要从字典中删除较旧的条目。但是,当我尝试这样做时,我遇到了“dict_keys”错误。
'<=' not supported between instances of 'dict_keys' and 'int'
当我尝试将值转换为 int 时,我被告知不支持。
int() argument must be a string, a bytes-like object or a number, not 'dict_keys'
我在这里看到答案说要使用列表理解。但是,由于这本字典中可能有一百万个条目,我希望有某种方法可以执行强制转换,而不必在整个键列表上执行。
import numpy as np
d = dict()
for i in range(100):
d[i] = i+10
minId = int(np.min(d.keys()))
while(minId <= 5):
d.pop(minId)
minId += 1
解决方案
您无需转换dict_keys
为int
. 无论如何,这不是一件有意义的事情。你的问题是np.min
需要一个序列,而返回值d.keys()
不是一个序列。
要获取可迭代的最小值,请使用常规 Python min
,而不是np.min
. 然而,min
在循环中调用是一种低效的做事方式。heapq.nsmallest
可以提供帮助,或者您可以找到比 dict 更好的数据结构。
推荐阅读
- c# - How may I convert the datetime sql to c# by using linq?
- python - Converting Pandas DF to Numpy Array gives me a # of features error when trying to predict?
- javascript - 是否可以在灰尘js中使用动态键?
- statistics - 如何从 R 中的 TukeyHSD 测试(在双向 ANOVA 之后)中提取可比较的结果?
- python - 名称“net_input”未定义,即使它在全局中
- javascript - How do I control the state of this child component upon a button click in its parent?
- ruby-on-rails - Showing comment form on each post, throws "undefined method `comments' for 1:Integer" error
- sql - Rails generated model with migration never uses index when doing a where
- inheritance - 类型 ::class 与 Kotlin 中的类型有什么不同
- python - 如何在 Kivy 中更改小部件颜色