如何在python中返回多维字典的相关键和值?

2024-04-26 14:44:02 发布

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

我有这本词典

myDict={('A','X'): 1.0,
        ('B','Y'): 0.4,
        ('B','Z'): 0.6,
        ('C','X'): 0.1,
        ('C','Y'): 0.3,        
        ('C','Z'): 0.6,
 }

我需要与第一个键相关联的列表。例如:

1)如果我提供第一个键“A”,我希望得到list1=['X']和list2=[1.0]

如果第一个是listy2.0

3)如果我提供第一个键'C',我希望得到list1=['X','Y','Z']和list2=[0.1,0.3,0.6]

我只需要以上提供的三个案例中的一个,这取决于我提供的第一个密钥。在

编辑:我的字典是从这个question的答案来的

有没有可能用一种简单的方法?也许是用列表理解,但我没能做到。。。在


Tags: 方法答案编辑列表字典密钥mydict案例
3条回答

你可以使用嵌套字典。在

myDict={'A': {'X':1.0, 'Y':0.4}} ...}

你可以像这样拿到你的单子。在

^{pr2}$

如果你不想改变字典结构-

list2 = [val for ((key1, key2), val) in myDict.items() if key1=='A']
list1 = [key2 for ((key1, key2), val) in myDict.items() if key1=='A']

那应该行得通。不过,这并不是存储用于此用途的数据的最有效方法。在

在'A'是你可以把一个变量与所需的键。在

您可以使用dict.setdefault初始化两个列表,同时迭代dict项并将值附加到子列表中。在

o = {}
for (a, b), v in myDict.items():
    o.setdefault(a, [[], []])[0].append(b)
    o[a][1].append(v)
print(o)

该输出:

^{pr2}$

相关问题 更多 >