Python将列表嵌套字典转换为扁平字典的方法

Chloe
Chloe
发布时间:2026-10-15| 4人浏览过
原创

本文介绍如何将Python中形如[{'a': 97}, {'b': 98}]的列表嵌套字典转换为单一字典。通过结合range生成字母序列,利用map函数构建初始列表,再借助字典的items()方法提取键值对,最后通过双重循环遍历合并至新字典,实现数据结构的扁平化处理。

Python列表嵌套字典转换概述

在观看视频教程时,遇到了形如[{'a': 97}, {'b': 98}, {'c': 99}, {'d': 100}, {'e': 101}, ...]的列表嵌套字典结构,

目标是将上述列表转换为{'a': 97, 'b': 98, 'c': 99, 'd': 100, 'e': 101, ...}的单一字典形式。

首先,上述示例中a对应97、b对应98等,表示key为a到z的小写英文字母,value为对应的ASCII码值,

构建初始列表数据

因此,可以结合range()方法定义变量如下:

即alpha = ['a', 'b', 'c', ..., 'z']

生成[{'a': 97}, {'b': 98}, {'c': 99}, {'d': 100}, {'e': 101}, ...]的代码可以结合map()函数来生成

函数运行结果:

这实际上是遍历打印[{'a': 97}, {'b': 98}, {'c': 99}, {'d': 100}, {'e': 101}, ...]的结果。

利用items()方法转换字典

接下来需要将上述形式转换为


{'a' : 97,'b' : 98,'c' : 99 ,'d' : 100,'e' : 101,。。。。。}

本人采用的是Python字典中的items()函数方法:

i.items()的作用:使 { x: y } 转换为 [(x, y)]

结果就是:


{'a' : 97}, {'b' : 98}, {'c' : 99}, {'d' : 100}, {'e' : 101}, ...........---------》 [('a' , 97)],[('b' : 98)],........

即一个i.items()代表一个[(x, y)]的字典列表

通过双重循环遍历输出i.items()结果:

程序的目的是获取对应的key和value值:

然后将上述数据放入新定义的空字典中:

判断字典嵌套与遍历示例

补充:Python判断字典是否嵌套及嵌套字典列表

如下所示:


#coding: utf-8
import types
#获取字典中的objkey对应的值,适用于字典嵌套
#dict:字典
#objkey:目标key
#default:找不到时返回的默认值
def dict_get(dict, objkey, default):
 tmp = dict
 for k,v in tmp.items():
  if k == objkey:
   return v
  else:
   if type(v) is types.DictType:
    ret = dict_get(v, objkey, default)
    if ret is not default:
     return ret
 return default
#如
dicttest={"result":{"code":"110002","msg":"设备设备序列号或验证码错误"}}
ret=dict_get(dicttest, 'msg', None)
print(ret)

字典的列表


 "network": {
  "tls": [],
  "udp": [
   {
    "src": "192.168.56.102",
    "dst": "114.114.114.114",
    "offset": 2372,
    "time": 9.506472110748291,
    "dport": 53,
    "sport": 51394
   },
   {
    "src": "192.168.56.102",
    "dst": "114.114.114.114",
    "offset": 2611,
    "time": 2.232347011566162,
    "dport": 53,
    "sport": 53604
   }]
   }
for k,v in mydict.items():
   if type(v) is types.ListType:
    for val in v:
     if type(val) is types.DictType:
      for key,value in val.items():
       print("%s:%s"%(key,value))
   else:
    print("%s:%s"%(k,v))

以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。如有错误或未考虑完全的地方,望不吝赐教。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。