当前位置:   article > 正文

python实现:字典的合并(相同key的value相加)及字典的输出排序(各种意义下)_python合并字典 相同的值相加并排序

python合并字典 相同的值相加并排序

背景

目前所做的一个项目,需要对数据进行处理,进行中的某一步即为要对生成的词频字典进行合并处理。且合并词频词典并非单纯的合在一起,而是需要将具有相同key的item项value进行相加

实现

相同key的item项value进行相加的词典合并
#version 1.0
def Merge(dict1, dict2):
    return(dict2.update(dict1))


dict1={'a':2,'b':3}
dict2={'a':3,'b':2}

Merge(dict1,dict2)
print(dict2)#{'a': 2, 'b': 3}

d3={'a':2,'b':3}
d4={'c':3,'d':7}
Merge(d3,d4)
#{'c': 3, 'd': 7, 'a': 2, 'b': 3}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

这样做只是单纯的合并字典,如遇到相同key项,直接进行合并代替,并不是我们要的效果

from collections import Counter


X,Y = Counter(dict1), Counter(dict2)
z=dict(X+Y)
print(z)

X=dict(X+Y)
print(X)
#{'a': 5, 'b': 5}
# {'a': 5, 'b': 5}


d4={'c':3,'d':7}
X,Y = Counter(d4), Counter(dict2)
z=dict(X+Y)
print(z)
#{'c': 3, 'd': 7, 'a': 3, 'b': 2}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

利用collections.Counter实现,同时合并了字典且合并了相同key的item项

词典排序
#字典按value的值进行排序 reverse=True表示是否进行降序  all_dict字典变量名
print (sorted(all_dict.items(), key=lambda x: x[1], reverse=True))



my_dict = {'a': 22, 'b': 11, 'c': 44, 'd': 33}

print (my_dict.items())                             #[('a', 22), ('c', 44), ('b', 11), ('d', 33)]
# 字典的key以列表形式输出
print ([key for key, value in my_dict.items()])     #['a', 'c', 'b', 'd']
# 字典的value以列表的形式输出
print ([value for key, value in my_dict.items()])   #[22, 44, 11, 33]
# 字典的key:value互换位置
print ({value: key  for key, value in my_dict.items()} )  #{33: 'd', 11: 'b', 44: 'c', 22: 'a'}
# 字典按key的值进行排序
print (sorted(my_dict.items(), key=lambda x: x[0])) #[('a', 22), ('b', 11), ('c', 44), ('d', 33)]
# 字典按value的值进行排序(正序)
print (sorted(my_dict.items(), key=lambda x: x[1])) #[('b', 11), ('a', 22), ('d', 33), ('c', 44)]等价于:print (sorted(my_dict.items(), key=lambda x: x[1], reverse=False))说明:my_dict.items()为待排序的对象;key=lambda x: x[1]是对前面的对象中的第二维数据(即value)的值进行排序。 key=lambda 变量:变量[维数] 。维数可以按照自己的需要进行设置。


print(sorted(my_dict.items(), key=lambda x: x[1])[-1]) #44
#获取字典中,value最大的item
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/215268?site
推荐阅读
相关标签
  

闽ICP备14008679号