python - 如何创建嵌套字典 PYTHON
问题描述
这个问题类似于我学习如何在 Python 中使用 3 个列表创建嵌套字典的另一个问题
如何从采用以下输出形式的 3 个列表中获得输出
a = ['A', 'B', 'C', 'D']
b = [1,2,3,4]
c = ['N1', 'N2', 'N3', N4]
output = [{'A': {'N1':1}}, {'B':{'N2':2}}, {'C':{'N3':3}}, {'D':{'N4':4}}]
输出与发布的链接不同。如果我可以描述一下,我会说它是一个字典,其中“N#”是值 1-4 的关键字,而这些字典又具有关键字“A”-“D”,它们似乎都是字典里面的一些顶级关键字未显示,它们都是该主关键字的元素。
我使用了提供输出的这行代码。这些是与我使用的不同的值,但关键是它没有那么多的大括号或边缘的方括号
d = {k: {x: y} for k, x, y in zip(a, b, c)}
# output: {'A':{'1' :'9'} , 'B':{'2':'8'}, 'C':{'3':'7'} , 'D':{'4':'6'}}
所以我已经解释了我认为这意味着什么,但我不确定如何继续。我试着做类似的事情
d = {w:{k:{x:y}}for w,k,x,y in zip(sound, a, b, c)}
其中“声音”是相同元素值的列表,但仅打印出列表中的第 4 件事。任何帮助解决这个问题将不胜感激。谢谢。
解决方案
使用列表推导。遍历压缩列表并创建嵌套字典:
a = ['A', 'B', 'C', 'D']
b = [1, 2, 3, 4]
c = ['N1', 'N2', 'N3', 'N4']
>>> [{k1: {k2: v}} for k1, v, k2 in zip(a, b, c)]
[{'A': {'N1': 1}}, {'B': {'N2': 2}}, {'C': {'N3': 3}}, {'D': {'N4': 4}}]
推荐阅读
- python - 如何编写一个转换函数并返回转换后的函数的函数?
- sql - sql查询以计算列中存在的-1和1的数量
- r - jupyter notebook 和 .tabset tabset
- algorithm - 分区相等子集和
- javascript - 在 JavaScript 中获取超类
- java - JNI 可以将非常大的字符串传递给 C++ 吗?
- python - sklearn PolynomialFeatures 给了我多个拟合线
- c++ - VC++ 一个解决方案中的多个项目 - 链接器问题 (LNK2019)
- swift - 如何快速从 Promise 返回值
- pandas - 如何使用包含 dtype 列表的熊猫系列为特定条件选择值?