zoukankan      html  css  js  c++  java
  • 『Python CoolBook』数据结构和算法_字典比较&字典和集合

     一、字典元素排序

    dict.keys(),dict.values(),dict.items()

    结合max、min、sorted、zip进行排序是个很好的办法,另外注意不使用zip时,字典的lambda操作方法:

    price = {
        'a':1,
        'b':2,
        'c':3
    }
    
    # 多个键的值相同时会采取元组比较的形式,实际应用时注意
    min_p = min(zip(price.values(), price.keys()))
    max_p = max(zip(price.values(), price.keys()))
    print(min_p, max_p)  # (1, 'a') (3, 'c')
    
    # 字典被处理时会被处理key,不使用zip时比较难以理解
    max(price, key=lambda k:price[k])  # 'c'
    
    # 排序操作
    sorted(zip(price.values(),price.keys()),key=lambda x:-x[0])  #  [(3, 'c'), (2, 'b'), (1, 'a')]
    

    二、字典和集合

    一个字典就是一个键集合与值集合的映射关系。字典的keys()方法返回一个展现键集合的键视图对象。键视图的一个很少被了解的特性就是它们也支持集合操作,比如集合并、交、差运算。所以,如果你想对集合的键执行一些普通的集合操作,可以直接使用键视图对象而不用先将它们转换成一个set。

    字典的items()方法返回一个包含(键,值)对的元素视图对象。这个对象同样也支持集合操作,并且可以被用来查找两个字典有哪些相同的键值对。

    尽管字典的values()方法也是类似,但是它并不支持这里介绍的集合操作。某种程度上是因为值视图不能保证所有的值互不相同,这样会导致某些集合操作会出现问题。不过,如果你硬要在值上面执行这些集合操作的话,你可以先将值集合转换成set,然后再执行集合运算就行了。

    a = {
        'x':1,
        'y':2,
        'z':3
    }
    b = {
        'w':4,
        'x':5,
        'y':6
    }
    
    # 字典.items()返回的实际是集合
    print(a.items() & b.items())  # set()
    print(a.items() - b.items())  # {('z', 3), ('x', 1), ('y', 2)}
    
    # 字典.keys()返回的实际是集合
    print(a.keys() - b.keys())  # {'z'}
    
    # 由于可能存在重复元素,所以.values()不是集合
    # print(a.values() - b.values()) # 报错
    
  • 相关阅读:
    LSMW TIPS
    Schedule agreement and Delfor
    Running VL10 in the background 13 Oct
    analyse idoc by creation date
    New Journey Prepare
    EDI error
    CBSN NEWS
    Listen and Write 18th Feb 2019
    Microsoft iSCSI Software Target 快照管理
    通过 Microsoft iSCSI Software Target 提供存储服务
  • 原文地址:https://www.cnblogs.com/hellcat/p/8593656.html
Copyright © 2011-2022 走看看