美文网首页
Python 字典那些事儿

Python 字典那些事儿

作者: Ferrari1001 | 来源:发表于2018-05-05 16:18 被阅读20次

    一、字典的遍历:

    【1】items() : # 以列表的形式返回字典键值对

    x = {'2': 1, '3': 4, '4': 2, '1': 5, '5': 3}
    print('x.items=', x.items())
    
    #第一次运行输出结果:
    x.items= dict_items([('4', 2), ('2', 1), ('1', 5), ('3', 4), ('5', 3)])
    #第二次运行输出结果:
    x.items= dict_items([('4', 2), ('1', 5), ('3', 4), ('2', 1), ('5', 3)])
    #第三次运行输出结果:
    x.items= dict_items([('4', 2), ('1', 5), ('5', 3), ('2', 1), ('3', 4)])
    

    【注】:items()函数返回的结果类似于Set集合的性质,结果具有随机性。

    【2】for index_dict in dict.xxx # 以迭代器对象返回字典键值对

    dict_vectors = {'kpr_1_306_33': 1.7466493322169585,
                    'kpr_2_483_82': 1.839624478242107,
                    'kpr_2_116_11': 1.907668321920154,
                    'kpr_1_220_369': 1.5338498358415051,
                    'qr_2_97_19': 1.7485243691742516
                    }
    # 第一种方法
    for cur_vec in dict_vectors:
        print("%s:%.16f" % (cur_vec, dict_vectors[cur_vec]))
    # 第二种方法
    for k, v in dict_vectors.items():
        print("%s:%.16f" % (k, v))
    # 第三种:
    for k in dict_vectors.keys():
        print("%s:%.16f" % (k, dict_vectors[k]))
    # 第四种:
    for v in dict_vectors.values():
        print('%.16f' % (v))
    # 第五种:
    for k, v in zip(dict_vectors.keys(), dict_vectors.values()):
        print("%s:%.16f" % (k, v))
    【注】zip() 函数可以把列表合并,并创建一个元祖对的列表;zip()参数可以是任何类型的序列,也可以有两个以上的参数,当传入参数的长度不同时,zip自动以最短序列长度为准进行截取,获得元祖。
    

    【注】:需要说明的是,for循环遍历字典元素时,同一个字典,每迭代一次循环输出的字典元素值的顺序是随机的。(即每次运行结果可能不同)

    二、字典的排序

    【1】sorted() #对所有可迭代的对象进行排序操作。
      【语法】:sorted(iterable[, cmp[, key[, reverse]]])

      【参数说明】:
        <1>iterable -- 可迭代对象。
        <2>cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
        <3>key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
        <4>reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

      【返回结果】:
        返回重新排序的列表。

      【代码实例】

    dict_vectors = {'kpr_1_306_33': 1.7466493322169585,
                    'kpr_2_483_82': 1.839624478242107,
                    'kpr_2_116_11': 1.907668321920154,
                    'kpr_1_220_369': 1.5338498358415051,
                    'qr_2_97_19': 1.7485243691742516
                    }
    # 【示例1】按照item中的第一个字符进行排序,即按照key排序
    sorted_vector = sorted(vectors.items(), key=operator.itemgetter(0))  
    print('sorted_vector=', sorted_vector)
    
    # 输出结果:
    sorted_vector= [('kpr_1_220_369', 1.5338498358415051), ('kpr_1_306_33', 1.7466493322169585), ('kpr_2_116_11', 1.907668321920154), ('kpr_2_483_82', 1.839624478242107), ('qr_2_97_19', 1.7485243691742516)]
    
    # 【示例2】按照item中的第二个字符进行排序,即按照value排序
    sorted_vector = sorted(vectors.items(), key=operator.itemgetter(1))  
    print('sorted_vector=', sorted_vector)
    
    # 输出结果:
    sorted_vector= [('kpr_1_220_369', 1.5338498358415051), ('kpr_1_306_33', 1.7466493322169585), ('qr_2_97_19', 1.7485243691742516), ('kpr_2_483_82', 1.839624478242107), ('kpr_2_116_11', 1.907668321920154)]
    
    

    相关文章

      网友评论

          本文标题:Python 字典那些事儿

          本文链接:https://www.haomeiwen.com/subject/xwpsrftx.html