社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
目录
一、zip() 对字典实现键值反转
!! 注意:zip函数返回一个迭代器,即内容只能消费一次!
prices = {'a': 1, 'b': 123, 'c': 111, 'd': 555, 'e': 4} # !!注意,zip函数返回一个迭代器,即内容只能消费一次 zip_prices = zip(prices.values(), prices.keys()) print(zip_prices) # <zip object at 0x0000021E64AC9E88> list_prices = [] for i in zip_prices: list_prices.append(i) print(list_prices) # [(1, 'a'), (123, 'b'), (111, 'c'), (555, 'd'), (4, 'e')] # 由于一次性消费,所以必须再次初始一次 zip_prices = zip(prices.values(), prices.keys()) # 返回根据原来的vlaue值返回最小的对象 min_price = min(zip_prices) print(min_price) # (1, 'a') # 返回根据原来的vlaue值返回最大的对象 zip_prices = zip(prices.values(), prices.keys()) max_price = max(zip_prices) print(max_price) # (555, 'd') # 若,字典内存在多个相同value值的键值对,那zip会更具key为排序依据 prices = {'a': 1, 'b': 1, 'c': 555, 'd': 555, 'e': 4} print(min(zip(prices.values(), prices.keys()))) # (1, 'a') print(max(zip(prices.values(), prices.keys()))) # (555, 'd')
1-1 zip() 基于元组、列表实现字典
def get_dict(result, *args): print(result) # ('ARCRY',) print(*args) # ['name'] print(dict(zip(*args, result))) # {'name': 'ARCRY'} print(zip(*args, result)) # <zip object at 0x00000192979E9D88> print(dict(zip(result, *args))) # {'ARCRY': 'name'} return dict(zip(*args, result)) # ------------ def get_dict(result, *args): return dict(zip(*args, result)) res = get_dict(('ARCRY',), ['name']) # {'name': 'ARCRY'} get_dict(('ARCRY','aaaa'), ['name','2222']) # {'name': 'ARCRY', '2222': 'aaaa'}
二、字典的集合操作,获取两个字典对象的相同或不同
注意!字典的value对象不支持集合操作!因为无法保证所有值都是唯一的。
a = { 'x': 1, 'y': 2, 'z': 3, } b = { 'x': 3, 'y': 2, 'z': 1, } # & 相同 print(a.keys() & b.keys()) # {'x', 'z', 'y'} # print(a.values() & b.values()) # TypeError: unsupported operand type(s) for &: 'dict_values' and 'dict_values' print(a.items() & b.items()) # {('y', 2)} # - 不同 print(a.keys() - b.keys()) # set() 空集合 # print(a.values() - b.values()) # TypeError: unsupported operand type(s) for -: 'dict_values' and 'dict_values' print(a.items() - b.items()) # {('z', 3), ('x', 1)} # ^ 不同时包含于a和b的元素 print(a.keys() ^ b.keys()) # set() 空集合 # print(a.values() ^ b.values()) # TypeError: unsupported operand type(s) for ^: 'dict_values' and 'dict_values' print(a.items() ^ b.items()) # {('x', 3), ('z', 1), ('x', 1), ('z', 3)} # | a或b中包含的所有元素,去重 print(a.keys() | b.keys()) # {'z', 'x', 'y'} # print(a.values() | b.values()) # TypeError: unsupported operand type(s) for |: 'dict_values' and 'dict_values' print(a.items() | b.items()) # {('x', 3), ('x', 1), ('z', 1), ('z', 3), ('y', 2)}
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!