python – 使字典列表中的字典长度相等

假设一个长度不等的字典列表,使它们等长的最佳方法是什么,即缺少键值,添加键但值设置为空字符串或null:

lst = [
  {'id': '123', 'name': 'john'},
  {'id': '121', 'name': 'jane'},
  {'id': '121'}, 
  {'name': 'mary'}
] 

成为:

lst = [
  {'id': '123', 'name': 'john'},
  {'id': '121', 'name': 'jane'},
  {'id': '121', 'name': ''}, 
  {'id': '', 'name': 'mary'}
] 

我能想到的唯一方法是转换为pandas数据帧然后再转换为dict:

pd.DataFrame(lst).to_dict(orient='records')

最佳答案 查找所有密钥需要完整的初始数据传递:

>>> set().union(*lst)
{'id', 'name'}

现在迭代dicts并为每个键设置默认值:

keys = set().union(*lst)
for d in lst:
    for k in keys:
        d.setdefault(k, '')
点赞