以列表形式存储在字典中的值

时间:2019-06-06 03:31:24

标签: python

我需要以下问题的帮助。

使用主题代码(“ S1”或“ S2”)打印高于75(> 75)的标记。字典(d)如下。

d = {"S1":[80, 87, 71, 95, 78, 65], "S2": [51, 78, 65, 78, 85, 78]}

我已经尝试过了。

d = {"CS":[80, 87, 71, 95, 78, 65], "STAT": [51, 78, 65, 78, 85, 78]}
{k:v for (k,v) in d.items() if v > 75}

但是它给出了类型错误。

我想我的循环不会遍历列表中的每个值。

请帮助!

3 个答案:

答案 0 :(得分:0)

您收到错误,因为v是列表而不是整数。要打印所有高于75的打印件,可以在v

上使用滤镜
{k:list(filter(lambda x: x > 75, v)) for (k,v) in d.items()}

答案 1 :(得分:0)

您应该使用list-comprehension过滤掉v中的所需值。

{k: [val for val in v if val > 75] for k,v in d.items()}

{'S1': [80, 87, 95, 78], 'S2': [78, 78, 85, 78]}

答案 2 :(得分:0)

这是使用itertools

的有趣方式
d = {"S1":[80, 87, 71, 95, 78, 65], "S2": [51, 78, 65, 78, 85, 78]}

print([value for value in list(itertools.chain.from_iterable(d.values())) if value > 75])