Python关于字典的操作方法有哪些

其他教程   发布日期:2025年02月11日   浏览次数:190

这篇文章主要讲解了“Python关于字典的操作方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python关于字典的操作方法有哪些”吧!

初始化

  1. # 最常用这种
  2. my_object = {
  3. "a": 5,
  4. "b": 6
  5. }
  6. # 如果你不喜欢写大括号和双引号:
  7. my_object = dict(a=5, b=6)

合并字典

  1. a = { "a": 5, "b": 5 }
  2. b = { "c": 5, "d": 5 }
  3. c = { **a, **b } #最简单的方式
  4. assert c == { "a": 5, "b": 5, "c": 5, "d": 5 }
  5. # 合并后还要修改,可以这样:
  6. c = { **a, **b, "a": 10 }
  7. assert c == { "a": 10, "b": 5, "c": 5, "d": 5 }
  8. b["a"] = 10
  9. c = { **a, **b }
  10. assert c == { "a": 10, "b": 5, "c": 5, "d": 5 }

字典推导式

  1. # 使用字典推导式来删除 key
  2. a = dict(a=5, b=6, c=7, d=8)
  3. remove = set(["c", "d"])
  4. a = { k: v for k,v in a.items() if k not in remove }
  5. # a = { "a": 5, "b": 6 }
  6. # 使用字典推导式来保留 key
  7. a = dict(a=5, b=6, c=7, d=8)
  8. keep = remove
  9. a = { k: v for k,v in a.items() if k in keep }
  10. # a = { "c": 7, "d": 8 }
  11. # 使用字典推导式来让所有的 value 加 1
  12. a = dict(a=5, b=6, c=7, d=8)
  13. a = { k: v+1 for k,v in a.items() }
  14. # a = { "a": 6, "b": 7, "c": 8, "d": 9 }

Collections 标准库

Collections 是 Python 中的一个内置模块,它有几个有用的字典子类,可以大大简化 Python 代码。我经常使用的其中两个类,defaultdict 和 Counter。此外,由于它是 dict 的子类,因此它具有标准方法,如 items()、keys()、values() 等。

  1. from collections import Counter
  2. counter = Counter()
  3. #counter 可以统计 list 里面元素的频率
  4. counter.update(['a','b','a']
  5. #此时 counter = Counter({'a': 2, 'b': 1})
  6. #合并计数
  7. counter.update({ "a": 10000, "b": 1 })
  8. # Counter({'a': 10002, 'b': 2})
  9. counter["b"] += 100
  10. # Counter({'a': 10002, 'b': 102})
  11. print(counter.most_common())
  12. #[('a', 10002), ('b', 102)]
  13. print(counter.most_common(1)[0][0])
  14. # => a

defaultdict 也是 dict 的必杀技:

  1. from collections import defaultdict
  2. # 如果字典的 value 是 字典
  3. a = defaultdict(dict)
  4. assert a[5] == {}
  5. a[5]["a"] = 5
  6. assert a[5] == { "a": 5 }
  7. # 如果字典的 value 是列表
  8. a = defaultdict(list)
  9. assert a[5] == []
  10. a[5].append(3)
  11. assert a[5] == [3]
  12. # 字典的 value 的默认值可以是 lambda 表达式
  13. a = defaultdict(lambda: 10)
  14. assert a[5] == 10
  15. assert a[6] + 1 == 11
  16. # 字典里面又是一个字典,不用这个,你要做多少初始化操作?
  17. a = defaultdict(lambda: defaultdict(dict))
  18. assert a[5][5] == {}

字典转 JSON

我们通常说的 JSON 就是指 JSON 字符串,它是一个字符串。Dict 可以转成 JSON 格式的字符串。

  1. import json
  2. a = dict(a=5, b=6)
  3. # 字典转 JSON 字符串
  4. json_string = json.dumps(a)
  5. # json_string = '{"a": 5, "b": 6}'
  6. # JSON 字符串转字典
  7. assert a == json.loads(json_string)
  8. # 字典转 JSON 字符串保存在文件里
  9. with open("dict.json", "w+") as f:
  10. json.dump(a, f)
  11. # 从 JSON 文件里恢复字典
  12. with open("dict.json", "r") as f:
  13. assert a == json.load(f)

字典转 Pandas

  1. import pandas as pd
  2. # 字典转 pd.DataFrame
  3. df = pd.DataFrame([
  4. { "a": 5, "b": 6 },
  5. { "a": 6, "b": 7 }
  6. ])
  7. # df =
  8. #ab
  9. # 056
  10. # 167
  11. # DataFrame 转回字典
  12. a = df.to_dict(orient="records")
  13. # a = [
  14. #{ "a": 5, "b": 6 },
  15. #{ "a": 6, "b": 7 }
  16. # ]
  17. # 字典转 pd.Series
  18. srs = pd.Series({ "a": 5, "b": 6 })
  19. # srs =
  20. # a5
  21. # b6
  22. # dtype: int64
  23. # pd.Series 转回字典
  24. a = srs.to_dict()
  25. # a = {'a': 5, 'b': 6}

以上就是Python关于字典的操作方法有哪些的详细内容,更多关于Python关于字典的操作方法有哪些的资料请关注九品源码其它相关文章!