首页 > 解决方案 > 如何将 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

标签: python

解决方案


您无需转换dict_keysint. 无论如何,这不是一件有意义的事情。你的问题是np.min需要一个序列,而返回值d.keys()不是一个序列。

要获取可迭代的最小值,请使用常规 Python min,而不是np.min. 然而,min在循环中调用是一种低效的做事方式。heapq.nsmallest可以提供帮助,或者您可以找到比 dict 更好的数据结构。


推荐阅读