识别 API 返回的不同嵌套字典类型以便应用正确类型的解析的最 Pythonic 方法是什么?
我正在从 Reddit 进行 API 调用来获取 URL,并且正在获取具有不同键名称和不同嵌套字典结构的嵌套字典。
我正在拉取我需要的 URL,但我需要一种更 Pythonic 的方式来识别嵌套字典的不同键名称和不同结构,因为if我在一个for循环中尝试的语句会遇到错误,因为“if”字典不包含key 我NoneType只是从if“询问”该键是否在字典中的语句中得到一个错误。
在接下来的几段中,我描述了该问题,但您也许可以深入研究字典示例和下面的代码,并了解我无法一次性识别三种类型字典之一的问题。嵌套字典没有相同的结构,我的代码充满了trys 和我认为的冗余for循环。
我有一个函数可以处理三种类型的嵌套字典。topics_data(下面使用)是一个 Pandas Dataframe,列是包含嵌套字典的vid列名称。topics_data有时,单元格中的对象vid是None我正在阅读的帖子是否不是视频帖子。
API 仅返回三种主要类型的嵌套字典(如果没有None)。NoneType我最大的问题是,如果我尝试if使用以另一个键开头的键捕获嵌套字典的语句(reddit_video例如相反),则识别第一个键名称而不会出现错误oembed。由于这个问题,我为三种嵌套字典类型中的每一种迭代嵌套字典列表三次。我希望能够迭代嵌套字典列表一次,并一次性识别和处理每种类型的嵌套字典。
下面是我得到的三种不同类型的嵌套字典的示例,以及我现在设置来处理它们的丑陋代码。我的代码可以工作,但很丑陋。请挖进去看看。
嵌套字典...
嵌套字典一
{'reddit_video': {'fallback_url': 'https://v.redd.it/te7wsphl85121/DASH_2_4_M?source=fallback',
'height': 480,
'width': 480,
'scrubber_media_url': 'https://v.redd.it/te7wsphl85121/DASH_600_K',
'dash_url': 'https://v.redd.it/te7wsphl85121/DASHPlaylist.mpd?a=1604490293%2CYmQzNDllMmQ4MDVhMGZhODMyYmIxNDc4NTZmYWNlNzE2Nzc3ZGJjMmMzZGJjMmYxMjRiMjJiNDU4NGEzYzI4Yg%3D%3D&v=1&f=sd',
'duration': 17,
'hls_url': 'https://v.redd.it/te7wsphl85121/HLSPlaylist.m3u8?a=1604490293%2COTg2YmIxZmVmZGNlYTVjMmFiYjhkMzk5NDRlNWI0ZTY4OGE1NzgxNzUyMDhkYjFiNWYzN2IxYWNkZjM3ZDU2YQ%3D%3D&v=1&f=sd',
'is_gif': False,
'transcoding_status': 'completed'}}
嵌套字典二
{'type': 'gfycat.com',
'oembed': {'provider_url': 'https://gfycat.com',
'description': 'Hi! We use cookies and similar technologies ("cookies"), including third-party cookies, on this website to help operate and improve your experience on our site, monitor our site performance, and for advertising purposes. By clicking "Accept Cookies" below, you are giving us consent to use cookies (except consent is not required for cookies necessary to run our site).',
'title': 'Protestors in Hong Kong are cutting down facial recognition towers.',
'type': 'video',
'author_name': 'Gfycat',
'height': 600,
'width': 600,
拉丁的传说
相关分类