列出dict中tuple键的所有值

MrP*_*u22 3 python dictionary

假设我有一个以元组为键的字典,如下所示:

d1 = {}
d1[(111,1)] = "value1111"
d1[(111,2)] = "value1112"
d1[(111,3)] = "value1113"
d1[(112,1)] = "value1121"
d1[(112,2)] = "value1122"
d1[(112,3)] = "value1123"
Run Code Online (Sandbox Code Playgroud)

如何在元组键的第一个元素中获取给定数字的所有值?也就是说111,我希望获得以下内容:

value1111
value1112
value1113
Run Code Online (Sandbox Code Playgroud)

我试过print(d1[(111,i)])但它只返回一个值,有一个简单的方法吗?

提前致谢.

Iro*_*ist 9

使用列表理解,这样:

[v for k,v in d1.items() if k[0]==111]
Run Code Online (Sandbox Code Playgroud)

条件if k[0]==111表示仅返回d1其键的第一个元素的值111

您也尝试过print(d1[(111,i)],如果您可以控制键元组的第二个元素的范围和类型,那将会起作用,即:

>>> [d1[(111,i)] for i in range(1,4)]
['value1111', 'value1112', 'value1113']
Run Code Online (Sandbox Code Playgroud)

在你的例子中,我们知道i只能从1到3,range(1,4)但是如果你不知道什么是范围i甚至是什么类型i,那么列表理解就是你最好的朋友.

当然,可以获取key元组的第二个元素列表,其第一个元素是111这样做的:

>>>my_filter = [k[1] for k in d1 if k[0]==111]
[2, 3, 1]
>>>my_list = [d1[(111,i) for i in my_filter]
['value1112', 'value1113', 'value1111']
Run Code Online (Sandbox Code Playgroud)


tim*_*geb 7

一个简单的列表理解将成功:

>>> [d1[tup] for tup in d1 if tup[0] == 111]
['value1112', 'value1113', 'value1111']
Run Code Online (Sandbox Code Playgroud)

它说"对于tup字典中的每个键,如果键的第一个元素是111,则给我相应的值".