簡體   English   中英

在已排序的字典列表中查找最近的項目

[英]Find closest item in a sorted List of Dictionaries

我有一個字典列表,它們按一個屬性排序:

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

我想找到最接近給定值的sortedProp值(例如1dff應該在這里返回第二個字典)。 我知道我可以使用bisect來獲得最佳速度(性能很重要,因為列表長約 30,000 個 dicts),並且我找到了在 dicts 列表中查找精確值的答案, 並在列表中找到最接近的值ints ,但我似乎無法找到在字典列表中找到最接近值的答案。

編輯:我不是在問如何對字典列表進行排序,我已經這樣做了。 我在問如何找到包含最接近給定值的sortedProp值的sortedProp

編輯 2:我使用十六進制數(來自 phash 運行的結果)作為排序屬性,因此“最近”被定義為兩個散列之間的漢明距離。

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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM