初始化# 最常用这种my_object = {a: 5,b: 6}# 如果你不喜欢写大括号和双引号:my_object = dict(a=5, b=6)
合并字典a = { a: 5, b: 5 }b = { c: 5, d: 5 }c = { **a, **b } #最简单的方式assert c == { a: 5, b: 5, c: 5, d: 5 }# 合并后还要修改,可以这样:c = { **a, **b, a: 10 }assert c == { a: 10, b: 5, c: 5, d: 5 }b[a] = 10c = { **a, **b }assert c == { a: 10, b: 5, c: 5, d: 5 }
字典推导式# 使用字典推导式来删除 keya = dict(a=5, b=6, c=7, d=8)remove = set([c, d])a = { k: v for k,v in a.items() if k not in remove }# a = { a: 5, b: 6 }# 使用字典推导式来保留 keya = dict(a=5, b=6, c=7, d=8)keep = removea = { k: v for k,v in a.items() if k in keep }# a = { c: 7, d: 8 }# 使用字典推导式来让所有的 value 加 1a = dict(a=5, b=6, c=7, d=8)a = { k: v+1 for k,v in a.items() }# a = { a: 6, b: 7, c: 8, d: 9 }
collections 标准库collections 是 python 中的一个内置模块,它有几个有用的字典子类,可以大大简化 python 代码。我经常使用的其中两个类,defaultdict 和 counter。此外,由于它是 dict 的子类,因此它具有标准方法,如 items()、keys()、values() 等。
from collections import countercounter = counter()#counter 可以统计 list 里面元素的频率counter.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])# => a
defaultdict 也是 dict 的必杀技:
from collections import defaultdict# 如果字典的 value 是 字典a = defaultdict(dict)assert a[5] == {}a[5][a] = 5assert a[5] == { a: 5 }# 如果字典的 value 是列表a = defaultdict(list)assert a[5] == []a[5].append(3)assert a[5] == [3]# 字典的 value 的默认值可以是 lambda 表达式a = defaultdict(lambda: 10)assert a[5] == 10assert a[6] + 1 == 11# 字典里面又是一个字典,不用这个,你要做多少初始化操作?a = defaultdict(lambda: defaultdict(dict))assert a[5][5] == {}
字典转 json我们通常说的 json 就是指 json 字符串,它是一个字符串。dict 可以转成 json 格式的字符串。
import jsona = dict(a=5, b=6)# 字典转 json 字符串json_string = json.dumps(a)# json_string = '{a: 5, b: 6}'# json 字符串转字典assert a == json.loads(json_string)# 字典转 json 字符串保存在文件里with open(dict.json, w+) as f:json.dump(a, f)# 从 json 文件里恢复字典with open(dict.json, r) as f:assert a == json.load(f)
字典转 pandasimport pandas as pd# 字典转 pd.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}
以上就是python中字典的基本操作方法有哪些?的详细内容。