当值是列表中的元组时,从字典中获取值列表?

时间:2015-07-11 22:38:06

标签: python dictionary

希望从下面的字典中获取一个列表,其中包含每个键中每个值的第三个数字。对于下面的字典,所需的输出将是[400,100,10]。就我而言,这就是我的意思。到目前为止我的输出只给了我三个整数: 400 100 10  但它不允许我将数字添加到单个列表中。

my_dict={1:[(20,30,400)],2:[(80,90,100),(8,9,10)]}

for values in my_dict.values():
    for v in values:
        last_num = v[2]

3 个答案:

答案 0 :(得分:2)

所以只需将它们附加到列表中:

result = []
for values in my_dict.values():
    for v in values:
        last_num = v[2]
        result.append(last_num)

您可以将其压缩为列表理解:

result = [v[2] for values in my_dict.values() for v in values]

请注意,字典没有排序,因此根据字典的插入和删除历史记录,数字可能会以不同的顺序出现。

如果您想要下订单(例如,按排序键),您必须先进行一些排序:

result = [v[2] for k in sorted(my_dict) for v in my_dict[k]]

答案 1 :(得分:1)

你可以在一行中完成

[ x[2] for l in my_dict.values() for x in l ]

对于

my_dict={1:[(20,30,400)],2:[(80,90,100),(8,9,10)]}

返回

[400, 100, 10]

答案 2 :(得分:0)

正如Martjin所说,只是将他们列入名单。使用-1添加任何长度列表/元组的最后一个值

list_of_values = []
for lists in my_dict.values():
for tuple in lists:
    list_of_values.append(tuple[-1])