在已排序的词典列表中查找最近的项

2024-10-02 12:30:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字典列表,按一个属性排序:

[{"name":"efi", "sortedProp":"01df"},
 {"name":"abe", "sortedProp":"1de9"},
 {"name":"bit", "sortedProp":"e182"}...]

我想找到与给定值最接近的sortedProp值(例如,1dff应该在这里返回第二个dict)。我知道我可以使用bisect来获得最佳的速度(性能很重要,因为列表大约有30000个dict),我已经找到了finding exact values in a list of dicts,和{a2}的答案,但是我似乎找不到在dict列表中找到最接近值的答案。在

编辑:我不是在问如何对字典进行排序,我已经做过了。{1{cdm>最接近于给定的值。在

edit2:我使用十六进制数(phash运行的结果)作为sorted属性,所以‘closest’被定义为两个散列之间的Hamming距离。在


Tags: 答案name列表字典属性排序bit性能
1条回答
网友
1楼 · 发布于 2024-10-02 12:30:58
def takeClosestEx(myList, myNumber):
    """
    Assumes myList is not sorted. Returns closest value to myNumber.
    """

    return min(myList, key=lambda x:abs(int(x["sortedProp"], 16)-myNumber))

相关问题 更多 >

    热门问题