如何将带有元组 id 的字典转换为将 id 映射到所有其他 id 的字典字典?

问题描述 投票:0回答:1

在Python中,我试图将字典转换为字典的字典。字典 1 的键是 id 对的元组。与该对关联的值是一个浮点数,用于测量这两个项目之间的相似性。

我想要的是字典 2,其中键是单个 ID,值是另一个具有单个键的字典:与第一个 ID 配对的所有其他 ID 的值对(无论 id 顺序如何)。请参阅下面的示例:

Dict1 = { (1, 2): 0.2, (1, 3): 0.4, (1, 4): 0.7, (2, 3): 0.25, (2, 4): 0.5 }

Dict2 = { 1: {2: 0.2, 3: 0.4, 4: 0.7}, 2: {1: 0.2, 3: 0.25, 4: 0.5} }

如何以计算效率最高的方式管理此问题?

我尝试了嵌套 for 循环,但无法完全弄清楚如何识别与特定 id 关联的唯一 id 配对。我也不认为这将是计算上最有效的方法,并且想知道是否有一种方法可以在没有嵌套循环的情况下做到这一点。

python dictionary tuples
1个回答
0
投票
Dict1 = { (1, 2): 0.2, (1, 3): 0.4, (1, 4): 0.7, (2, 3): 0.25, (2, 4): 0.5 }
List_of_val = []
List_of_keys = []
Completed_full = []
Dictionary_sep = {}
for item in Dict1.keys():
   List_of_keys.append(item)
   List_of_val.append(Dict1[item] )
x = 0
for val in List_of_val:
    
    Completed_full.append({List_of_keys[x][0],val})
    x = x +1

print(Completed_full)

嵌套循环是正确的选择。每对都有一个元组和一个 id。元组和 id 都被放入单独的列表中,然后元组的第一个元素与 id 成为一对,然后作为单个字典添加到附加列表中。完成的列表包含带有 id 的元组的第一个元素。

[{0.2, 1}, {0.4, 1}, {0.7, 1}, {0.25, 2}, {0.5, 2}]

如果您仍然想将元素分成两个单独的字典,那么您需要做的就是将每一对元素放入各自适当的单独字典中。

© www.soinside.com 2019 - 2024. All rights reserved.