Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用isinstance()从json中删除整数_Python_Json_Isinstance - Fatal编程技术网

Python 使用isinstance()从json中删除整数

Python 使用isinstance()从json中删除整数,python,json,isinstance,Python,Json,Isinstance,我正在用Python编写代码,并使用一个JSON文件,该文件有两列数据;一个键,以及在我处理的数据中找到该键的次数。我的目标是删除所有整数键 我将JSON提取为test\u map,然后使用keys()方法创建一个键字典(keys)。我正在尝试使用isinstance循环键,以识别键中的每个整数键。我还没有谈到删除部分,但我注意到键中的每个键都被标识为字符串,因此isinstance没有捕获任何内容 如果有人对如何编写此代码以捕获int键有任何想法,然后可能删除它们,我将不胜感激。我相信解决办法

我正在用Python编写代码,并使用一个JSON文件,该文件有两列数据;一个键,以及在我处理的数据中找到该键的次数。我的目标是删除所有整数键

我将JSON提取为
test\u map
,然后使用
keys()
方法创建一个键字典(keys)。我正在尝试使用
isinstance
循环键,以识别键中的每个整数键。我还没有谈到删除部分,但我注意到键中的每个键都被标识为字符串,因此
isinstance
没有捕获任何内容

如果有人对如何编写此代码以捕获int键有任何想法,然后可能删除它们,我将不胜感激。我相信解决办法包括铸造,但我不明白

keys=test_map.keys()
for key in keys:
    if isinstance(key,int):
        print(f"key: {key}")
我在下面编辑了一个JSON文件示例。我正在尝试删除带有整数键的对象

    {
    "run": 121,
    "'988844333',": 4,    <remove
    "123": 27,            <remove
    "brown": 19,
    "face": 345,
    "21554,": 4,          <remove
    "gain": 4,
    }
{
“跑”:121,

“'988844333',”:4,您可以尝试这样的强制转换。但是您需要编写一个尝试,除非密钥不能转换为int

keys = [key for key in test_map]
for key in keys:
    try:
        a = int(key)
        del test_map[key]
    except:
        pass
字符串的
.isdigit()
方法检查字符串是否仅由数字组成。 这是我的建议

我们可以用它来过滤int键

代码如下:

res={k:v代表k,v在test_map.items()中,如果不是k.isdigit()}

你说的“2列数据”是什么意思?JSON不是列型的。列是不正确的。它是一个JSON,有一个键和一个与键关联的频率值。尼克:这些被称为JSON“对象”,是无序的名称/值对集(请参阅)。这些将通过标准库中的
json
模块转换为Python字典。请回答您的问题,并添加json文件中的内容的小样本。我添加了一个正在使用的json示例。感谢您的帮助。感谢您的反馈。运行此操作时,我收到一个运行时错误:在迭代过程中更改了字典的大小n、 从我查到的情况来看,问题是在迭代时从test_映射中删除。感谢您的评论,您是对的,我已将其更改为不引用test_映射键,而是复制它。@martineau根据您的反馈使用注释更新了帖子。