Python 如何仅从字典/json中提取特定字段?
我正在尝试创建一个新的字典,只提取特定的字段,我只想要“process\u hash”、“process\u name”、“process\u effective\u reputation”字段 下面的代码可以工作,但它只提取第一项,我想提取所有项,但只提取“进程\u哈希”、“进程\u名称”、“进程\u有效\u声誉”字段 JSON: 代码: 更新: 感谢Lauren Boland提供的代码,这很有效,Nattelar提供了解释Python 如何仅从字典/json中提取特定字段?,python,json,Python,Json,我正在尝试创建一个新的字典,只提取特定的字段,我只想要“process\u hash”、“process\u name”、“process\u effective\u reputation”字段 下面的代码可以工作,但它只提取第一项,我想提取所有项,但只提取“进程\u哈希”、“进程\u名称”、“进程\u有效\u声誉”字段 JSON: 代码: 更新: 感谢Lauren Boland提供的代码,这很有效,Nattelar提供了解释 我已经附加了新代码,我正在尝试将进程散列字段拆分为两个字段,因此它是
我已经附加了新代码,我正在尝试将进程散列字段拆分为两个字段,因此它是“md5”“sha256”“进程名称”“进程有效声誉”,我已经尝试了上面的代码,但我得到了 行={'md5':数据['process_hash'][0],'sha256':数据['process_hash'][1]} 索引器:列表索引超出范围
谢谢您在for循环的每次迭代中都会覆盖
选定的\u字段
字典
试着把它列成一个清单。它将返回一个字典列表
selected_fields = []
for d in r:
selected_fields.append({k: d[k] for k in ("process_hash", "process_name", "process_effective_reputation")})
return selected_fields
尽管已经有了答案,我想指出这里发生了什么 当您试图使一个变量等于某个值时,最终将覆盖以前存在的值,这就是代码无法工作的原因。但是,即使您尝试使用选定的_fields.update(),它也无法工作,因为键名称相同,现在键的值将被覆盖
在执行此类操作时,您通常必须保持结构的原始类型,即在选定的_字段的情况下,['Results']是一个列表我已附加了新代码,我正在尝试将进程散列字段拆分为两个字段,因此它是“md5”“sha256”“进程名称”“进程有效的_声誉”,我尝试了上面的代码,但我得到了row={'md5':data['process\u hash'][0],'sha256':data['process\u hash'][1]}索引器:列表索引超出范围
response = json.loads(r.text)
r = response['results']
selected_fields = []
for d in r:
selected_fields.append({k: d[k] for k in ("process_hash", "process_name", "process_effective_reputation")})
new_data = []
for data in selected_fields:
fieldnames = 'md5 sha256 process_name process_effective_reputation'.split()
row = {'md5': data['process_hash'][0], 'sha256': data['process_hash'][1]}
# Copy process_name and process_effective_reputation fields.
row.update({fieldname: data[fieldname] for fieldname in fieldnames[-2:]})
new_data.append(row)
return new_data
selected_fields = []
for d in r:
selected_fields.append({k: d[k] for k in ("process_hash", "process_name", "process_effective_reputation")})
return selected_fields