当前位置: 首页 > 科技观察

Python 关于字典的操作,看这个就够了

时间:2023-03-12 20:37:46 科技观察

Python关于字典的操作,读这个JSON字典到Pandas初始化就够了#这是最常用的my_object={"a":5,"b":6}#如果你不喜欢写大括号和双引号:my_object=dict(a=5,b=6)mergeDictionarya={"a":5,"b":5}b={"c":5,"d":5}c={**a,**b}#最简单的方式assertc=={"a":5,"b":5,"c":5,"d":5}#合并后,需要修改,它可以是这样的:c={**a,**b,"a":10}assertc=={"a":10,"b":5,"c":5,"d":5}b["a"]=10c={**a,**b}assertc=={"a":10,"b":5,"c":5,"d":5}字典推导#使用字典推导去除keya=dict(a=5,b=6,c=7,d=8)remove=set(["c","d"])a={k:vfork,vina.items()ifknotinremove}#a={"a":5,"b":6}#使用字典理解来保持keya=dict(a=5,b=6,c=7,d=8)keep=removea={k:vfork,vina.items()ifkinkeep}#a={"c":7,"d":8}#使用字典推导来加1到allvaluesa=dict(a=5,b=6,c=7,d=8)a={k:v+1fork,vina.items()}#a={"a":6,"b":7,"c":8,"d":9}Collections标准库Collections是Python中的一个内置模块,它有几个有用的字典子类,可以大大简化Python代码。我经常使用的两个类,defaultdict和Counter。另外,由于是dict的子类,所以有items()、keys()、values()等标准方法。update(['a','b','a']#此时counter=Counter({'a':2,'b':1})#合并计数counter.update({"a":10000,"b":1})#Counter({'a':10002,'b':2})counter["b"]+=100#Counter({'a':10002,'b':102})print(counter.most_common())#[('a',10002),('b',102)]print(counter.most_common(1)[0][0])#=>defaultdict也是必杀技ofdict:fromcollectionsimportdefaultdict#如果字典的值是一个字典a=defaultdict(dict)asserta[5]=={}a[5]["a"]=5asserta[5]=={"a":5}#如果字典的值是一个列表a=defaultdict(list)asserta[5]==[]a[5].append(3)asserta[5]==[3]#字典的值的默认值可以是lambda表达式a=defaultdict(lambda:10)asserta[5]==10asserta[6]+1==11#还有一个dic字典里面的词。如果没有这个,你需要做多少初始化?a=defaultdict(lambda:defaultdict(dict))asserta[5][5]=={}DictionarytoJSON我们通常把JSON称为JSON字符串,也就是字符串。Dict可以转换成JSON格式的字符串。importjsona=dict(a=5,b=6)#将字典转换为JSON字符串json_string=json.dumps(a)#json_string='{"a":5,"b":6}'#将JSON字符串转换为字典asserta==json.loads(json_string)#将字典转换为JSON字符串并保存到文件中withopen("dict.json","w+")asf:json.dump(a,f)#来自JSON文件恢复字典withopen("dict.json","r")asf:asserta==json.load(f)convertdictionarytoPandasimportpandasaspd#convertdictionarytopd.DataFramedf=pd.DataFrame([{"a":5,"b":6},{"a":6,"b":7}])#df=#ab#056#167#DataFrame转换回字典a=df.to_dict(orient="records")#a=[#{"a":5,"b":6},#{"a":6,"b":7}#]#字典到pd.Seriessrs=pd.Series({"a":5,"b":6})#srs=#a5#b6#dtype:int64#pd.Series转换回字典a=srs.to_dict()#a={'a':5,'b':6}