使用Json文件过滤单词列表

2024-08-31 11:29:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我的Json文件:

{
  "countries": [
  "Australia", "France", "Belgium"
  ]
}

我有一个index_list = ['Germany', 'USA, 'Ireland, Australia, "France", Belgium, "Kenya", "Spain" 我想过滤掉json文件中的所有国家

data_json= json.dumps(data["countries"])
res = filter(lambda i: i not in data_json, index_list)
print(res)

这给了我<filter object at 0x0000022D05C0E6A0>错误


3条回答

您可以将JSON数据强制转换为list(),并使用列表理解过滤其他数据

import json

data_json = list(json.load(open('file.json'))['countries'])

index_list = ['Germany', 'USA', 'Ireland', 'Australia', "France", 'Belgium', "Kenya", "Spain"]

answer = [country for country in index_list if country not in data_json]
print(answer)

您可以循环遍历所有元素,并检查json列表中是否存在这些元素,而不是过滤器

import json

data = {"countries": ["Australia", "France", "Belgium"]}

index_list = ["Germany", "USA", "Ireland", "Australia", "France", "Belgium", "Kenya", "Spain"]

data_json= json.dumps(data["countries"]) 
res = [item for item in index_list if item not in data_json] 
print(res)

结果:['Germany', 'USA', 'Ireland', 'Kenya', 'Spain']

这里是一个熊猫指数的方法。我们不需要循环(或列表理解),因为索引包含一个difference()方法

import pandas as pd

data = {"countries": ["Australia", "France", "Belgium"]}
index_list = ["Germany", "USA", "Ireland", "Australia", "France", 
              "Belgium", "Kenya", "Spain"]

result = pd.Index(index_list).difference(data['countries']).to_list()
print(result)

['Germany', 'Ireland', 'Kenya', 'Spain', 'USA']

相关问题 更多 >