如何用Python获取自定义类对象字典中最小time_delta对应的键值?
获取字典中time_delta最小的键与SoftMatch对象
当然可以用Python的min()函数直接实现,甚至不需要字典推导式——如果只是要单个最小项的话,min()是最直接高效的方式:
方法一:直接获取最小键值对
利用softmatches.items()获取所有键值对,通过key参数指定比较依据为SoftMatch实例的time_delta属性:
# 获取包含最小time_delta的键值对元组 min_pair = min(softmatches.items(), key=lambda item: item[1].time_delta) # 解包得到键和对应的对象 min_key, min_obj = min_pair print(min_key) # 输出: Nikon print(min_obj.time_delta) # 输出: 1
如果只需要单独获取键或对象,也可以针对性处理:
- 只获取最小对象:
min(softmatches.values(), key=lambda obj: obj.time_delta) - 只获取最小键:
min(softmatches, key=lambda k: softmatches[k].time_delta)
方法二:用字典推导式筛选所有最小项(多匹配场景)
如果存在多个SoftMatch实例的time_delta同为最小值的情况,用字典推导式可以筛选出所有符合条件的键值对:
# 先获取最小的time_delta值 min_time = min(obj.time_delta for obj in softmatches.values()) # 筛选出所有time_delta等于最小值的项 min_items = {key: obj for key, obj in softmatches.items() if obj.time_delta == min_time} # 输出所有符合条件的键值对 print(min_items)
内容的提问来源于stack exchange,提问作者Nicklas Blidmo
相关产品推荐
相关产品推荐

