上下文: 我使用Ajax调用从python模块返回一些复杂的JSON。我必须使用一个键列表,并确认一个单项dict列表包含一个带有每个键的dict。你知道吗
示例:
mylist=['this', 'that', 'these', 'those']
mydictlist=[{'this':1},{'that':2},{'these':3}]
我怎么知道mydictlist缺少“那些”键?一旦我知道了这一点,我就可以将{thats':4}附加到mylist中。简单地检查“那些”是行不通的,因为列表是动态的。数据结构无法更改。你知道吗
谢谢。你知道吗
pandas包是处理dicts问题列表的好方法。它接受所有键并使它们成为列标题,具有相似键的值填充同一列。你知道吗
看看这个:
最直接的方法是遍历容器并检查:
但是,如果您有很多键和/或字典,这将是不高效的:对于
mylist
中的每个元素,它在mydictlist
上迭代一次,即O(n*m)。相反,考虑一个集合操作:简单的代码是将搜索列表转换为一个集合,然后使用差异来确定缺少的内容:
这就得到了
missing
的{'those'}
。你知道吗由于命名的
set
方法可以接受多个参数(它们本身不必是set
),因此您只需将所有的dict
解压为difference
的参数,就可以一次从所需键的set
中减去它们。你知道吗如果确实需要处理重复项(为了确保在
mydictlist
的键中至少多次看到keys
中的每个keys
,因此mylist
可能包含一个值,该值必须在dict
中出现两次),可以使用collections
和itertools
来获取剩余计数:相关问题 更多 >
编程相关推荐