使用Python获取最接近的数据字典

使用Python获取最接近的数据字典,python,arrays,list,dictionary,Python,Arrays,List,Dictionary,考虑到您有一个包含不同元素的词典列表,例如: { "acousticness": 0.0681, "energy": 0.724, "loudness": -5.941, "tempo": 132.056, "valence": 0.676 }, { "acousticness": 0.2754, "energy": 0.866, "loudness": -7.874, "tempo": 180.056, "vale

考虑到您有一个包含不同元素的词典列表,例如:

{
    "acousticness": 0.0681,
    "energy": 0.724,
    "loudness": -5.941,
    "tempo": 132.056,
    "valence": 0.676
},
{
    "acousticness": 0.2754,
    "energy": 0.866,
    "loudness": -7.874,
    "tempo": 180.056,
    "valence": 0.540
},    
{
    "acousticness": 0.0681,
    "energy": 0.724,
    "loudness": -5.941,
    "tempo": 132.056,
    "valence": 0.676
}
您还可以让用户自己输入字典,例如

{
    "acousticness": 0.1382,
    "energy": 0.7274,
    "loudness": -5.8246,
    "tempo": 122.6412,
    "valence": 0.6153
}
您将如何在Python3中迭代字典以获取最接近的字典

我找到了关于如何在普通数组中查找最近元素的解释,但无法回避如何在数组比较中找到最近元素


提前谢谢你的帮助

假设希望字典值之间的绝对差值最小,可以执行以下操作:

data = [{
    "acousticness": 0.0681,
    "energy": 0.724,
    "loudness": -5.941,
    "tempo": 132.056,
    "valence": 0.676
},
    {
        "acousticness": 0.2754,
        "energy": 0.866,
        "loudness": -7.874,
        "tempo": 180.056,
        "valence": 0.540
    },
    {
        "acousticness": 0.0681,
        "energy": 0.724,
        "loudness": -5.941,
        "tempo": 132.056,
        "valence": 0.676
    }]

target = {
    "acousticness": 0.1382,
    "energy": 0.7274,
    "loudness": -5.8246,
    "tempo": 122.6412,
    "valence": 0.6153
}


def key(d, t=target):
    return sum(abs(t[k] - v) for k, v in d.items())


result = min(data, key=key)
print(result)
输出

{'tempo': 132.056, 'loudness': -5.941, 'acousticness': 0.0681, 'valence': 0.676, 'energy': 0.724}
答案的关键是使用的
参数。请注意,可以调整此答案以适应多个贴近度度量。例如,您可以更改键以计算字典值之间的欧几里德距离:

import math

def key(d, t=target):
    return math.sqrt(sum((t[k] - v)**2 for k, v in d.items())

使用字典中每个值之差的绝对值的最接近的数据?您需要说明基于什么因素定义了
最接近的