____tz_zs
一、遍历 dict 筛选出符合的 key
# -*- coding:utf-8 -*-"""@author: tz_zs"""raw_dict = {"A": "77","B": "88","C": "99","D": "88",}key_list = list(filter(lambda k: raw_dict.get(k) == "88", raw_dict.keys()))print(key_list) # ['B', 'D']
函数 filter 的使用详情见另一篇博客:Python 内置函数 filter、map、reduce
二、反转 dict 的 key 和 value
对于一些 key 和 value 一一映射的 dict,我们可以通过反转键值对,从而方便的通过 value 查找 key。
# -*- coding:utf-8 -*-"""@author: tz_zs"""raw_dict = {"-03-29": "H19","-06-28": "M19","-09-27": "U19","-12-27": "Z19",}# 方法一new_dict1 = dict(zip(raw_dict.values(), raw_dict.keys()))print(new_dict1)"""{'H19': '-03-29', 'M19': '-06-28', 'U19': '-09-27', 'Z19': '-12-27'}"""# 方法二new_dict2 = {v: k for k, v in raw_dict.items()}print(new_dict2)"""{'H19': '-03-29', 'M19': '-06-28', 'U19': '-09-27', 'Z19': '-12-27'}"""
三、关于 dict.keys 和 dict.values
根据官方文档说明,在迭代的过程中如果没有发生对字典的修改,那么 dict.keys 和 dict.values 这两个函数返回的 dict-view 对象总是保持对应关系。
如下两种方式等同:
pairs = zip(d.values(), d.keys())
pairs = [(v, k) for (k, v) in d.items()]
Python dictionary: are keys() and values() always the same order?