python中 列表导入到字典 出现相同的键,如何将值相加
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中 列表导入到字典 出现相同的键,如何将值相加相关的知识,希望对你有一定的参考价值。
我想将该列表转化为字典,但是在转换的时候,出现两个相同的键,对应的值我想相加,怎么样将这两个值相加,最后得到这个结果
result = dict()for data in number:
result[data[0]] = int(result.get(data[0], 0)) + int(data[3])
print(result) 参考技术A 在转换的时候用 key in d判断一下,如果为true就d[k]+=v
Python3 字典
Python3字典特点
1. 无序
2.键唯一 #不可变对象:整数、字符串、元组;可变对象:列表、字典
键:字典中,字典值可以是pyton 任意一个对象,但键不行;键在字典中不能出现相同的键,如果相同,后一个值会被记住,如下实例:
dic = {‘name‘:‘xp‘,‘name‘:‘26‘,‘job‘:‘IT‘,‘salary‘:9000} print(dic) # 打印结果为:{‘name‘: ‘26‘, ‘job‘: ‘IT‘, ‘salary‘: 9000}
键必须不可变,可以是数字,字符串或者元组,决不能用列表和字典。
字典的创建
字典的每个键值(key)对用冒号(:)分割,每个键值对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
1 dic = {‘name‘:‘xp‘,‘age‘:‘26‘,‘job‘:‘IT‘,‘salary‘:9000} 2 print(dic)
查 通过键去查找
把相应的键放入到方括号中
1 dic = {‘name‘:‘xp‘,‘age‘:‘26‘,‘job‘:‘IT‘,‘salary‘:9000} 2 print(dic[‘age‘]) #打印结果为:26 3 print(list(dic.keys())) #以列表形式打印字典中的键;也可以不用加liest转换 dic.keys() 4 #打印结果:[‘name‘, ‘age‘, ‘job‘, ‘salary‘] 5 print(list(dic.values())) # 以列表形式打印字典中所有键对应的值 dic.values() 6 #打印结果为:[‘xp‘, ‘26‘, ‘IT‘, 9000] 7 print(list(dic.items())) #以列表的形式打印字典中所有的键值对 dic.items() 8 #打印结果为:[(‘name‘, ‘xp‘), (‘age‘, ‘26‘), (‘job‘, ‘IT‘), (‘salary‘, 9000)]
上述程序中有一种情况下需要用 list 转换,如下程序:
1 dic = {‘name‘:‘xp‘,‘age‘:‘26‘,‘job‘:‘IT‘,‘salary‘:9000} 2 dic1 = dic.keys() 3 print(dic1) #打印结果为:dict_keys([‘name‘, ‘age‘, ‘job‘, ‘salary‘]) 4 #print(dic1[1]) 打印这句话会报错 5 #报错 TypeError: ‘dict_keys‘ object does not support indexing 是因为dic1打印出来的是对象不是列表,怎么办呢? 6 7 print(list(dic1)[1]) #打印结果为: age 8 #加上list 转换,将dic1转换为列表:[‘name‘, ‘age‘, ‘job‘, ‘salary‘],然后取[1]元素。
字典中键不存在会是什么样呢?请看实例
1 dic = {‘name‘:‘xp‘,‘job‘:‘IT‘,‘salary‘:9000} 2 print(dic)# 打印结果为:{‘name‘: ‘xp‘, ‘job‘: ‘IT‘, ‘salary‘: 9000} 3 dic[‘age‘] = 18 4 print(dic)#打印结果为:{‘name‘: ‘xp‘, ‘job‘: ‘IT‘, ‘salary‘: 9000, ‘age‘: 18} 5 #通过例子我们能看出字典中如果键不存在,将会添加对应的键值对。这也是添加字典的一种方法如果将dic[‘age‘] = 18 改为 dic[‘age‘] 那么会报错,大家可以试试。
字典中键存在,又会是什么结果呢?请看实例
1 dic = {‘name‘:‘xp‘,‘age‘:26,‘job‘:‘IT‘,‘salary‘:9000} 2 3 ret = dic.setdefault(‘age‘,34) #setdefault() 函数 如果键存在,则返回对应的值, 4 print(ret) #打印结果为:26
改 修改字典
通过增加新的键值对,来修改或者删除字典中已有的内容
1 dic = {‘name‘:‘xp‘,‘age‘:‘26‘,‘job‘:‘IT‘,‘salary‘:9000} 2 dic[‘age‘] = 20 #通过键来修改对应的值。 3 print(dic) 4 #打印结果为:{‘name‘: ‘xp‘, ‘age‘: 20, ‘job‘: ‘IT‘, ‘salary‘: 9000} 5 6 dic[‘like‘] = ‘book‘ 7 print(dic) 8 #打印结果为:{‘name‘: ‘xp‘, ‘age‘: 20, ‘job‘: ‘IT‘, ‘salary‘: 9000, ‘like‘: ‘book‘}
1 dic = {‘name‘:‘xp‘,‘age‘:‘26‘,‘job‘:‘IT‘,‘salary‘:9000} 2 dic1 = {‘like‘:‘book‘,‘name‘:‘UUM‘} 3 dic.update(dic1)# update() 通过函数进行修改,被修改的字典里与要添加的键相同,则被修改的字典对应的键值被更新 4 print(dic) 5 #打印结果为:{‘name‘: ‘UUM‘, ‘age‘: ‘26‘, ‘job‘: ‘IT‘, ‘salary‘: 9000, ‘like‘: ‘book‘} 6 7 print(dic1) 8 #打印结果为:{‘like‘: ‘book‘, ‘name‘: ‘UUM‘}
删 删除字典
1 #程序1 2 dic = {‘name‘:‘xp‘,‘age‘:‘26‘,‘job‘:‘IT‘,‘salary‘:9000} 3 del dic[‘name‘] #通过键来删除字典中的键值对 4 print(dic) # 打印结果为:{‘age‘: ‘26‘, ‘job‘: ‘IT‘, ‘salary‘: 9000} 5 6 #程序2 7 dic = {‘name‘:‘xp‘,‘age‘:‘26‘,‘job‘:‘IT‘,‘salary‘:9000} 8 a=dic.pop(‘age‘) #删除该键值对应的值,并返回该键值对应的值 9 print(dic) #打印结果为:{‘name‘: ‘xp‘, ‘job‘: ‘IT‘, ‘salary‘: 9000} 10 print(a) #打印结果为:26 11 12 #程序3 13 dic = {‘name‘:‘xp‘,‘age‘:‘26‘,‘job‘:‘IT‘,‘salary‘:9000} 14 b = dic.popitem() #随机删除字典中某组键对值,并以元组方式返回 15 print(b) # 打印结果为:(‘salary‘, 9000) 16 print(dic) # 打印结果为:{‘name‘: ‘xp‘, ‘age‘: ‘26‘, ‘job‘: ‘IT‘} 17 18 #程序4 19 dic = {‘name‘:‘xp‘,‘age‘:‘26‘,‘job‘:‘IT‘,‘salary‘:9000} 20 dic.clear() #清空字典,但字典还存在,只不过是是一个空字典 21 print(dic) #打印结果为:{} 22 23 del dic #删除字典,再打印的话会报错 24 print(dic) #提示错误:NameError: name ‘dic‘ is not defined
字典嵌套
字典是支持无限极嵌套的。
1 cities = { 2 ‘河南省‘:{ 3 ‘商丘市‘:[‘民权县‘,‘睢县‘,‘宁陵县‘], 4 ‘开封市‘:[‘兰考县‘,‘杞县‘,‘通许县‘], 5 ‘洛阳市‘:[‘宜阳县‘,‘洛川县‘,‘伊川县‘] 6 }, 7 ‘北京市‘:{ 8 ‘大兴区‘:[‘西红门‘,‘黄村‘,‘天宫院‘], 9 ‘丰台区‘:[‘郭公庄‘,‘科技园‘,‘总部基地‘], 10 ‘朝阳区‘:[‘望京‘,‘将台‘,‘太阳宫‘], 11 ‘海淀区‘:[‘万柳‘,‘三小‘,‘巴沟‘] 12 }, 13 ‘河北省‘:{ 14 ‘保定市‘:[‘涿州市‘,‘高碑店‘,‘保定‘], 15 ‘廊坊‘:[‘永清‘,‘自然公园‘,‘安次区‘], 16 ‘张家口‘:[‘怀安县‘,‘万全区‘,‘桥西区‘] 17 } 18 } 19 print(cities[‘河南省‘][‘洛阳市‘][1]) 20 #打印结果为:洛川县
由上面的例子可知,河南省、北京市、河北省是个大的字典,而河南省又是个字典,字典里面又嵌套列表。
其他操作
dic.formkeys(参数,子参数) 其中参数可以是列表、元组。
1 dic = {} #定义一个空字典 2 dic1 = dic.fromkeys((‘host1‘,‘host2‘,‘host3‘),‘date‘)#.formkeys(参数,子参数)函数会生成一个字典 3 print(dic1) #一般初始化用 4 # 打印结果为:{‘host1‘: ‘date‘, ‘host2‘: ‘date‘, ‘host3‘: ‘date‘}
dic = {} #定义一个空字典 dic1 = dic.fromkeys([‘host1‘,‘host2‘,‘host3‘],#会打印字典里面有列表[‘date1‘,‘date2‘])#.formkeys(参数,子参数)函数会生成一个字典 print(dic1) #一般初始化用 # 打印结果为:{‘host1‘: [‘date1‘, ‘date2‘], ‘host2‘: [‘date1‘, ‘date2‘], ‘host3‘: [‘date1‘, ‘date2‘]}
sorted()
dic = {‘name‘:‘xp‘,‘age‘:26,‘job‘:‘IT‘,‘salary‘:9000} print(sorted(dic)) # 对键进行排序 #打印结果为:[‘age‘, ‘job‘, ‘name‘, ‘salary‘] print(sorted(dic.items())) # 对键值对进行排序 #打印结果为:[(‘age‘, 26), (‘job‘, ‘IT‘), (‘name‘, ‘xp‘), (‘salary‘, 9000)]
循环打印字典中的 values 和keys 的值
1 dic = {‘name‘:‘xp‘,‘age‘:26,‘job‘:‘IT‘,‘salary‘:9000} 2 for i in dic.values(): #循环打印字典中键对应的值(values) 3 print(i) 4 for i in dic.keys(): #循环打印键的值(keys) 5 print(i)
字典目前学到的就这些,以上是我学习过程中所总结的笔记,希望对大家有所帮助,觉得不错可以关注我哦~_~
以上是关于python中 列表导入到字典 出现相同的键,如何将值相加的主要内容,如果未能解决你的问题,请参考以下文章
Python列表元素为字典时,如何根据其中某个相同的键值进行元素合并
python 一个由字典构成的列表,修改其中1个字典的键的值,却把该列表所有字典相同的键的值都一起修改了?
添加键的值并按在 Python 中的字典列表中出现的键对其进行排序