以下是按照经纬度对对象数组中的对象进行分组和计数的解决方法:
import collections
# 定义对象类
class Location:
def __init__(self, latitude, longitude):
self.latitude = latitude
self.longitude = longitude
# 定义经纬度分组计数函数
def group_and_count(locations):
# 创建默认值为整数的字典,用于计数
counter = collections.defaultdict(int)
# 遍历对象数组
for location in locations:
# 将经纬度组合成字符串作为字典的键
key = f"{location.latitude},{location.longitude}"
# 对该键的计数加1
counter[key] += 1
# 返回分组计数结果
return counter
# 创建对象数组
locations = [
Location(39.9, 116.4),
Location(39.9, 116.4),
Location(40.0, 116.4),
Location(40.0, 116.5),
Location(39.9, 116.5),
Location(39.9, 116.5),
]
# 调用分组计数函数
result = group_and_count(locations)
# 输出结果
for key, value in result.items():
print(f"经纬度 {key} 出现 {value} 次")
运行以上代码,会输出以下结果:
经纬度 39.9,116.4 出现 2 次
经纬度 40.0,116.4 出现 1 次
经纬度 40.0,116.5 出现 1 次
经纬度 39.9,116.5 出现 2 次
以上代码中,我们首先定义了一个对象类Location
,其中包含经度和纬度属性。然后,定义了一个名为group_and_count
的函数,用于实现分组和计数功能。该函数使用了defaultdict
来创建一个默认值为整数的字典counter
,用于计数。然后,遍历对象数组,将每个对象的经纬度组合成字符串作为字典的键,并对该键的计数加1。最后,返回计数结果。
在示例中,我们创建了一个对象数组locations
,包含了6个对象。然后,调用group_and_count
函数对该数组进行分组和计数。最后,将结果打印输出。输出结果显示了每个经纬度出现的次数。
上一篇:按照记录名称查找记录的索引