使用多个键之一过滤字典

时间:2018-03-19 21:55:54

标签: python dictionary filter

我是Pyhton的新手,想要使用由两个值组成的键来过滤字典。在这里我的命令:

{(0, 'DRYER'): [103.0, 131.0, 9.0, 1.24],
 (2, 'DRYER'): [106.0, 120.0, 5.0, 1.24],
 (2, 'WASHING'): [70.0, 90.0, 11.0, 0.19]}

密钥由两个值(n,a)组成,我想在n=2创建一个新字典,结果是:

{(2, 'DRYER'): [106.0, 120.0, 5.0, 1.24],
 (2, 'WASHING'): [70.0, 90.0, 11.0, 0.19]}

如果有人可以提供帮助,我会感激不尽!

2 个答案:

答案 0 :(得分:1)

检查元组键的第一个值是否为2,具有dict理解:

{k: v for k, v in dct.items() if k[0]==2}

所以:

In [11]: dct = {(0, 'DRYER'): [103.0, 131.0, 9.0, 1.24],
    ...:  (2, 'DRYER'): [106.0, 120.0, 5.0, 1.24],
    ...:  (2, 'WASHING'): [70.0, 90.0, 11.0, 0.19]}
    ...:  

In [12]: {k: v for k, v in dct.items() if k[0]==2}
Out[12]: 
{(2, 'DRYER'): [106.0, 120.0, 5.0, 1.24],
 (2, 'WASHING'): [70.0, 90.0, 11.0, 0.19]}

答案 1 :(得分:0)

尝试使用filter

new_dict = dict(filter(function(), old_dict.items()))

在您的情况下function()将是

lambda it: True if it[0][0] == 2 else False

基本上filter()抓取一个函数和一个iterable,并从函数中删除所有元素,如果函数返回False