我有两个列表,其中包含列表元素,例如:
list1 = [['placeholder1', {'data': 'data1'}], ['placeholder2', {'data': 'data2'}], ['placeholder2', {'data': 'data1'}]]
list2 = [['placeholder2', {'data': 'data2'}], ['placeholder3', {'data': 'data5'}]]
intersection_result = [['placeholder2', {'data': 'data2'}]]
子列表元素的结构只是一个例子。所有子列表元素也可能包含字符串['asdf', 'qwert']
或字符串和数字的混合['sdfs', 232]
。但是,子列表结构总是相同的(在两个列表中)。你知道吗
如何获得两个列表中相同的列表元素的交集?你知道吗
一个简单的解决方案,它将独立于数据的结构。 您可以为数据生成signature hashes(使用json或pformat),并在list1和list2中查找公共哈希。你知道吗
演示:http://ideone.com/5i9cs8
str
也适用于简单的情况。您可以根据您的数据集和所需的效率进行选择。你知道吗如果我的理解是正确的,您可以通过检查并选择最小列表中与较大列表中元素相等的元素的^{} 来获得交集。你知道吗
理解一下,这看起来是这样的:
它使用,^{} 和^{} 以及分配给^{} 的键来始终从较小的列表中进行选择,并与较大的列表进行检查。你知道吗
这将产生:
如果您预先指定了最小-最大列表,或者,当然,如果您始终确定哪个列表比另一个列表大,则可以减少这种理解:
相关问题 更多 >
编程相关推荐