如何过滤JSON中值为指定数值的键值对?附具体场景示例
JSON键值对过滤问题解决方案
问题1:如何过滤JSON中值为0的键值对?
这个需求其实很好实现,不管你用Python还是JavaScript,都能通过遍历键值对并筛选符合条件的项轻松搞定。
Python实现
用字典推导式就能一行完成,简洁又高效:
# 假设你的原始JSON数据已经转为Python字典 original_data = {"post": 1, "bio": 1, "hashtag": 0, "profile": 0} # 过滤掉值为0的键值对 filtered_data = {key: val for key, val in original_data.items() if val != 0} print(filtered_data) # 输出: {'post': 1, 'bio': 1}
JavaScript实现
通过Object.entries把对象转成键值对数组,再用reduce构建新对象:
const originalData = {"post": 1, "bio": 1, "hashtag": 0, "profile": 0}; const filteredData = Object.entries(originalData).reduce((result, [key, value]) => { // 只保留值不为0的项 if (value !== 0) { result[key] = value; } return result; }, {}); console.log(filteredData); // 输出: { post: 1, bio: 1 }
问题2:过滤出权重值为1的键值对(附示例)
针对你给出的原始JSON数据,咱们只需要把筛选条件改成保留值为1的键值对就行,直接看代码:
Python实现
original_data = {"post": 1, "bio": 1, "hashtag": 0, "profile": 0} # 只保留值为1的键值对 filtered_data = {key: val for key, val in original_data.items() if val == 1} print(filtered_data) # 输出: {'post': 1, 'bio': 1}
JavaScript实现
const originalData = {"post": 1, "bio": 1, "hashtag": 0, "profile": 0}; const filteredData = Object.entries(originalData).reduce((result, [key, value]) => { if (value === 1) { result[key] = value; } return result; }, {}); console.log(filteredData); // 输出: { post: 1, bio: 1 }
本质上这两个问题的思路是一致的:遍历所有键值对,根据指定条件(值不为0/值等于1)筛选出需要保留的项,重新构建新的对象/字典。
内容的提问来源于stack exchange,提问作者Abhishek Singh
相关产品推荐
相关产品推荐

