Skip to main content
 首页 » 编程设计

python之有没有办法提取字典的子集

2025年05月04日13kenshinobiy

我想从一个 json 文件创建一个字典,但我尝试过的所有方法都不起作用。

json_file = [ 
    {'original_block': '94.142.136.0/21', 
     'transferred_blocks': '94.142.136.0/21', 
     'from': 'MAROSNET Telecommunication Company LLC', 
     'to': 'NTX Technologies s.r.o.', 
     'date': '28/06/2019', 
     'transferType': 'POLICY' 
    }, 
    {'original_block': '185.2.4.0/22', 
     'transferred_blocks': '185.2.4.0/22', 
     'from': 'REGISTER.IT S.P.A.', 
     'to': 'REGISTER S.P.A.', 
     'date': '01/07/2019', 
     'transferType': 'MERGER_OR_ACQUISITION' 
    } 
] 
 
new = ['original_block', 'date'] 
 
newd = {key:value for key,value in json_file.items() if key in new} 
 
print(newd) 

它给出错误信息 'list' object has no attribute 'items'

我希望

newd = {'94.142.136.0/21': '28/06/2019', '185.2.4.0/22':'01/07/2019'} 

请您参考如下方法:

你可以使用 dict 的理解:

data = [{'original_block': '94.142.136.0/21', 'transferred_blocks': '94.142.136.0/21', 'from': 'MAROSNET Telecommunication Company LLC', 'to': 'NTX Technologies s.r.o.', 'date': '28/06/2019', 'transferType': 'POLICY'}, {'original_block': '185.2.4.0/22', 'transferred_blocks': '185.2.4.0/22', 'from': 'REGISTER.IT S.P.A.', 'to': 'REGISTER S.P.A.', 'date': '01/07/2019', 'transferType': 'MERGER_OR_ACQUISITION'}] 
new = ['original_block', 'date'] 
result = dict([c[i] for i in new] for c in data) 

输出:

{'94.142.136.0/21': '28/06/2019', '185.2.4.0/22': '01/07/2019'} 

编辑:作为预防措施,可以使用 all 检查来确保缺失值不会引发 KeyError:

dict([c[i] for i in new] for c in data if all(j in c for j in new))