本文主要是python中dict常用的方法:
list 转化为 dict
dict遍历删除指定条件的元素
dict安装key或者value排序
dict的value统计计数
两个list转化为dict
def lst_2_dict():
"""
combine two list to dict
:return:
"""
lst1 = ['a', 'b', 'c']
lst2 = [1, 2, 3]
# d = {k: v for k, v in zip(lst1, lst2)}
d = dict(zip(lst1, lst2))
print d
# {'a': 1, 'c': 3, 'b': 2}
删除dict中value < 0 的元素
def iter_dict_remove():
"""remove item in dict while iteration it"""
d_info = {'aa': -1, 'bb': 0, 'cc': 1, 'dd': 2}
for k in d_info.keys():
print k, d_info[k]
if d_info[k] < 0:
del d_info[k]
print 'after del', d_info
按照key的顺序变量dict
def iter_dic_sort():
"""iter dict by sorted keys"""
d_info = {'33': 33, '88': 88, '22': 22, '44': 44}
for k in sorted(d_info):
print k, d_info[k]
安装key或者value对dict排序:
def dict_sort_by_value():
dic_num = {'first': 11, 'second': 2, 'third': 33, 'Fourth': 4}
# print all the keys
print dic_num.keys()
print list(dic_num)
# ['second', 'Fourth', 'third', 'first']
# print all the sorted keys
print sorted(dic_num)
# ['Fourth', 'first', 'second', 'third']
print sorted(dic_num, key=str.lower)
# ['first', 'Fourth', 'second', 'third']
# print sorted values
print sorted(dic_num.values())
# [2, 4, 11, 33]
# sorted by value
sorted_val = sorted(dic_num.items(), key=operator.itemgetter(1))
# [('second', 2), ('Fourth', 4), ('first', 11), ('third', 33)]
print sorted_val
# sorted by key
sorted_key = sorted(dic_num.items(), key=operator.itemgetter(0))
print sorted_key
# [('Fourth', 4), ('first', 11), ('second', 2), ('third', 33)]
dic_k_lst = {'11': [1, 2], 'ab': [3], 'cd': [0, -1, 2]}
# Sort a dictionary by length of the value
print sorted(dic_k_lst.items(), key=lambda item: len(item[1]))
# [('ab', [3]), ('11', [1, 2]), ('cd', [0, -1, 2])]
dic_k_set = {'11': {1, 2}, 'ab': {3}, 'cd': {0, -1, 2}}
# Sort a dictionary by length of the value
d_val_len = sorted(dic_k_set.items(), key=lambda item: len(item[1]))
print d_val_len
# [('ab', set([3])), ('11', set([1, 2])), ('cd', set([0, 2, -1]))]
print d_val_len[0][1]
# set([3])
print len(d_val_len[0][1])
# 1 (长度为 1)
对dict的value计数:
def dic_count_value():
from collections import Counter
dic_k_lst = {'11': None, 'ab': 3, 'name': 'xy', 'none': None, 'age': 26}
print Counter(dic_k_lst.values())
# Counter({None: 2, 'xy': 1, 26: 1, 3: 1})
# 统计none与非none的数量
count_none = 0
count_not_none = 0
for k in dic_k_lst.keys():
if dic_k_lst[k] is None:
count_none += 1
else:
count_not_none += 1
print count_none, count_not_none
# 2 3
统计dict中每个list的长度:
def count_val_lst_len():
d = {'T1': ['eggs', 'bacon', 'sausage'], 'T2': ['spam', 'ham', 'monty', 'python']}
print map(len, d.values())
# [4, 3]
print sum(map(len, d.values()))
# 7
dict value求和:
def sum_dic_val():
d_info = {'33': 1, '88': 2, '22': 3, '44': 4}
print sum(d_info.values())
# 10
def dic_probability():
p = {1: {1: 0.1, 2: 0.3}, 2: {1: 0.1, 2: 0.3}}
# {1: {1: 0.1, 2: 0.3}, 2: {1: 0.1, 2: 0.3}}
print p[2], p[2][2]
# {1: 0.1, 2: 0.3} 0.3
具体见本人的github
https://stackoverflow.com/questions/613183/how-to-sort-a-dictionary-by-value
https://stackoverflow.com/questions/72899/how-do-i-sort-a-list-of-dictionaries-by-values-of-the-dictionary-in-python
http://pythoncentral.io/how-to-sort-python-dictionaries-by-key-or-value/
https://stackoverflow.com/questions/20464368/sort-a-dictionary-by-length-of-the-value