一、字典的遍历:
【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)]
网友评论