ava8写一个根据复数个key将两个类型不同的list进行match的共通方法
时间: 2024-05-13 15:20:43 浏览: 157
以下是一个示例函数,它可以根据给定的复数个key将两个类型不同的list进行match:
```python
def match_lists(list1, list2, *keys):
"""
Match two lists based on multiple keys.
Args:
list1 (list): The first list to match.
list2 (list): The second list to match.
keys (tuple): The keys to match on.
Returns:
A list of tuples containing the matched items from list1 and list2.
"""
matches = []
for item1 in list1:
for item2 in list2:
match = True
for key in keys:
if key not in item1 or key not in item2 or item1[key] != item2[key]:
match = False
break
if match:
matches.append((item1, item2))
return matches
```
这个函数接受两个list和一个或多个key作为参数。它遍历list1和list2,查找匹配的项,并将它们作为元组添加到结果列表中。
对于每个项,函数遍历所有的keys,并检查它们是否在两个项中都存在,以及它们的值是否相等。如果任何一个key不匹配,则跳过当前的项,并继续查找下一个匹配项。
最后,函数返回匹配项的元组列表。
例如,假设我们有以下两个list:
```python
list1 = [
{"id": 1, "name": "Alice", "age": 25},
{"id": 2, "name": "Bob", "age": 30},
{"id": 3, "name": "Charlie", "age": 35}
]
list2 = [
{"id": 3, "city": "New York", "country": "USA"},
{"id": 1, "city": "Paris", "country": "France"},
{"id": 2, "city": "London", "country": "UK"}
]
```
我们可以调用match_lists函数来查找基于id的匹配项:
```python
matches = match_lists(list1, list2, "id")
print(matches)
```
这会输出以下结果:
```
[({'id': 1, 'name': 'Alice', 'age': 25}, {'id': 1, 'city': 'Paris', 'country': 'France'}),
({'id': 2, 'name': 'Bob', 'age': 30}, {'id': 2, 'city': 'London', 'country': 'UK'}),
({'id': 3, 'name': 'Charlie', 'age': 35}, {'id': 3, 'city': 'New York', 'country': 'USA'})]
```
这个结果给出了每个匹配项的两个元素,其中第一个元素来自list1,第二个元素来自list2。在这种情况下,它们都基于id匹配。
阅读全文