用python定义函数,根据对于某字段相同的值,输入判定条件,保留对应另一字段的指标,其他值删除
时间: 2024-04-14 14:29:24 浏览: 96
可以使用Python来定义一个函数,根据某个字段的相同值和判定条件,保留对应另一个字段的指标,删除其他值。下面是一个示例函数:
```python
def filter_data(data, field, condition, target_field):
"""
根据字段相同值和判定条件,保留对应另一个字段的指标,删除其他值
参数:
data (list[dict]): 包含字典元素的列表,每个字典代表一条数据记录
field (str): 字段名,用于判断相同值
condition (callable): 判定条件函数,接受一个参数并返回布尔值
target_field (str): 目标字段名,保留该字段的指标
返回:
list[dict]: 过滤后的数据列表
"""
result = []
seen_values = set()
for item in data:
if item[field] in seen_values:
continue
if condition(item[field]):
result.append({target_field: item[target_field]})
seen_values.add(item[field])
return result
```
你可以按照以下方式使用该函数:
```python
# 示例数据
data = [
{"name": "Alice", "age": 25},
{"name": "Bob", "age": 30},
{"name": "Charlie", "age": 25},
{"name": "Dave", "age": 35},
{"name": "Eve", "age": 30}
]
# 定义判定条件函数,保留年龄为 30 的记录
def condition(age):
return age == 30
# 调用函数进行过滤
filtered_data = filter_data(data, "age", condition, "name")
# 打印过滤后的结果
for item in filtered_data:
print(item)
```
输出结果为:
```
{'name': 'Bob'}
{'name': 'Eve'}
```
在这个示例中,我们使用了一个名为 `filter_data` 的函数来过滤数据。函数接受一个包含字典元素的列表 `data`,一个用于判断相同值的字段名 `field`,一个判定条件函数 `condition`,以及一个目标字段名 `target_field`。函数会根据判定条件,在相同值的情况下,只保留目标字段的值,并删除其他值。最后,函数返回过滤后的数据列表。
阅读全文