dict理解中嵌套字典键和值的引用

2024-04-19 13:58:06 发布

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

今天早些时候我问了这个问题:Evaluating values within a dictionary for different keys

我正在使用的词典的结构已经发生了变化,我已经尝试修改提供给我的解决方案以适应这种情况。你知道吗

以前的结构是:

locsOne = {1: [100], 2: [200], 3: [250]}

但现在改成了:

locsone = {1: [[100]], 2: [[200]], 3: [[250]]}

我想用哈弗斯公式在洛森词典上查一下关键字:值的距离关键字:值和如果它们大于450,则不应包含在结果字典中。你知道吗

生成的字典应如下所示:

locsTwo = {1: {2: 100, 3: 150}, 2: {1: 100, 3: 50}, 3: {1: 150, 2: 50}}

这是我收到的代码(感谢falsetru):

for k1 in locsOne:
    v1 = locsOne[k1][0]
    locsTwo[k1] = {k2: abs(v1 - locsOne[k2][0]) for k2 in locsOne
                   if k1 != k2 and abs(v1 - locsOne[k2][0]) <= 450}
print(locsTwo)

我修改它的尝试会返回错误,例如“IndexError:list outofrange”和“KeyError”。你知道吗

我最后的修改是:

for k1 in locsOne:
        v1 = locsOne[k1][1]
        locsTwo[k1] = {k2: harvesineForm(v1 , locsOne[k2][1]) for k2 in locsOne
                   if k1 != k2 and abs(v1 - locsOne[k2][0]) <= 450}

任何帮助都将不胜感激。你知道吗


Tags: andinforif字典k2k1关键字
1条回答
网友
1楼 · 发布于 2024-04-19 13:58:06
a = [[100]]
print a       # [[100]]
print a[0]    # [100]
print a[0][0] # 100

假设值在列表中始终包含一个嵌套在列表中的值:

locsOne = {1: [[100]], 2: [[200]], 3: [[250]]}
locsTwo = {}

for k1 in locsOne:
    v1 = locsOne[k1][0][0]
    locsTwo[k1] = {k2: abs(v1 - locsOne[k2][0][0]) for k2 in locsOne
                   if k1 != k2 and abs(v1 - locsOne[k2][0][0]) <= 450}
print(locsTwo)

您只需再次访问列表的第一个值([0]),因为您还有一层列表。你知道吗

相关问题 更多 >