import Counter
import collections
import itertools, collections
List1=[('1234', '5678', 9101112, 131415, 161716, 19), ('1234', '5678', 9101112, 131415, 161716, 19), ('1723113685', '1958120268', 704338729, 1310973186, 38760, 80), ('1723113685', '1958120268', 704338729, 1310973186, 38760, 70), ('1234', '5678', 9101112, 131415, 161716, 19), ('19216813', '6311624397', 3851697578, 0, 58816, 80), ('6311624397', '19216813', 2747564191, 3851697579, 890, 58816), ('19216813', '6311624397', 3851697579, 2747564192, 58816, 80), ('1234', '5678', 9101112, 131415, 161716, 19), ('19216813', '6311624397', 3851698039, 2747565640, 58816, 50)]
List2=[('1723113685', '1958120268', 704338729, 1310984130, 38760, 80), ('1723113685', '1958120268', 704338729, 1310985498, 38760, 80), ('1723113685', '1958120268', 704338729, 1310986866, 38760, 80), ('1723113685', '1958120268', 704338729, 1310973186, 38760, 80), ('6311624397', '19216813', 2747564192, 3851697579, 80, 58816), ('19216813', '6311624397', 3851698039, 2747564192, 58816, 80), ('19216813', '6311624397', 3851698039, 2747565640, 58816, 80), ('1234', '5678', 9101112, 131415, 161716, 19), ('19216813', '6311624397', 3851698039, 2747568536, 58816, 80), ('19216813', '6311624397', 3851698039, 2747569984, 58816, 80), ('19216813', '6311624397', 3851698039, 2747571432, 58816, 80), ('19216813', '6311624397', 3851698039, 2747572880, 58816, 80)]
ab=[]
abDict = Counter(ab)
for x in List1:
if x in List2:
ab.append(x)
for key, value in abDict.items():
if value>2:
print key
我想在list1
和list2
之间找到所有匹配的元素。当我用计数器更改list1
和list2
时,它找不到所有元素,但只显示匹配一个元素。
这可以显示所有元素,但我找不到多少元素。
答案 0 :(得分:0)
浏览list1并检查list2中是否包含元素,并在列表所包含的类中重写equals / hashcode方法。
List<ClassA> list1 = [a1, a2];
List<ClassA> list2 = [a3, a4];
List<ClassA> matchedElement = new ArrayList<ClassA>();
for (ClassA a: list1) {
if (list2.contains(a)){
matchedElement.add(a);
}
}
System.out.println(matchedElement);
public Class ClassA {
@Override
public boolean equals(Object obj) {
//compare objects values from A
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime
* result + obj.hashCode();
}