我有一个disctionary列表,看起来像这样:
list = [{'sitemap': [{'path': 'http://test.com',
'errors': '0',
'contents': [{'type': 'web',
'submitted': '34801',
'indexed': '4656'}]}]},
{'sitemap': [{'path': 'https://example.com',
'errors': '0',
'contents': [{'type': 'web', 'submitted': '2329'}]}]},
{'sitemap': [{'path': 'https://fakeurl.com', 'errors': '0'}]}]
字符串
某些条目中偶尔缺少“contents”键。
这是我追求的理想输出:
list = [{'sitemap': [{'path': 'http://test.com',
'errors': '0',
'contents': [{'type': 'web',
'submitted': '34801',
'indexed': '4656'}]}]},
{'sitemap': [{'path': 'https://example.com',
'errors': '0',
'contents': [{'type': 'web',
'submitted': '2329',
'indexed': 'NaN'}]}]},
{'sitemap': [{'path': 'https://fakeurl.com',
'errors': '0',
'contents': [{'type': 'NaN',
'submitted': 'NaN',
'indexed': 'NaN'}]}]}]
型
我如何识别'contents'键是否缺失,并在缺失时添加一个值为NaN的键?
3条答案
按热度按时间o3imoua41#
循环遍历列表。如果字典中没有
contents
键,则添加它。当
contents
存在时,将其与每个键的默认值列表合并。字符串
suzh9iv82#
您应该遍历
'sitemap'
中的每个字典,以检查'contents'
是否存在。如果它不存在,则创建一个空列表,然后访问列表中的每个字典并填写默认值。如果没有字典,则复制整个默认值并将其追加到列表中:字符串
输出量:
型
如果你想减少一些缩进,你可以使用stdlib中的一些工具:
型
wxclj1h53#
我认为您可以枚举每个站点Map的“内容”,并在利用
setdefault()
的同时使用索引进行字典合并给出:
字符串
您可以尝试:
型
这应该会给予你一些格式:
型
不会赢得任何速度比赛,但我认为这是相当容易遵循。