我有一个字典列表如下:
knownShows = [
{'Parsed Name': 'A', 'Parsed Season':'1', 'Override?': 'N', 'NewName': '', 'NewSeason': ''},
{'Parsed Name': 'B', 'Parsed Season':'1', 'Override?': 'N', 'NewName': '', 'NewSeason': ''},
{'Parsed Name': 'C', 'Parsed Season':'2', 'Override?': 'N', 'NewName': '', 'NewSeason': ''},
{'Parsed Name': 'D', 'Parsed Season':'1', 'Override?': 'N', 'NewName': '', 'NewSeason': ''}
]
我正在使用python脚本根据剧集名称自动添加新词典(show name和解析的季号)(例如“a-s01e02”变成解析的名称“a”,解析的季号“1”)
有没有办法检查列表中的字典中是否已经存在某个键/值对组合
我试图使用this solution的修改版本,将其转换为
if not (any(d['Parsed Name'] == showName for d in knownShows) and any(d['Parsed Season'] == str(season) for d in knownShows)):
但当解析列表中有多个季节的同一个节目时,这就开始引起问题
例如,我有一集节目/季节组合:
'Parsed Name' = "A"
'Parsed Season' = "2"
由于这两个节目:一个叫“a”的节目和一个叫“2季”的节目已经存在于列表中,所以它并没有为a的第2季创建新的条目
是否有任何方法可以更改if语句以检查Show A和第2季的组合,并且只有在列表中的同一词典中存在此特定组合时才会变为False
您可以使用列表理解将名称和季节合并到单个字段中,并进行检查
输出
如果您对数据结构有控制,您可能需要考虑将数据存储在字典中而不是列表:
这样,您就可以直接哈希到所需的条目,而不必迭代数据
您可以通过以下方式使用和内部列表理解:
相关问题 更多 >
编程相关推荐