python - 删除特定键但不删除 value(list) ,因此它成为上键的元素
问题描述
不知道能不能用标题表达自己
示例字典:
dict_x = {"key1": "value1", "key2": [{"key3": "value3"}, {"key4": [{"key5": "value5"}, {"key6":
"value6"}]}]}
编辑:认为你有很多这样的嵌套字典。你必须循环。
Edit2:我们需要一种递归方法来处理大量嵌套的字典
,我想得到什么作为输出:
{"key1": "value1", "key2": [{"key3": "value3"}, {"key5": "value5"}, {"key6": "value6"}]}
所以删除 key4 但保留值并将其作为值传递给上键。
我通过 stackoverflow 进行了搜索,但给出的唯一解决方案是展平 dict 或删除具有它们所持有的值的键。我想删除一个键,但我不想丢失它的值。
解决方案
这是使用字典理解的通用解决方案:
from itertools import chain
{k1: list(chain(*(list(d.values())[0] if all(map(lambda x: isinstance(x, list), d.values())) else [d]
for d in v1)))
if isinstance(v1, list) else v1
for k1,v1 in dict_x.items()}
以及使用经典循环的解决方案:
out = {}
for k,v in dict_x.items():
if isinstance(v, list):
l = []
for elem in v:
if all(map(lambda x: isinstance(x, list), elem.values())):
l.extend([i for sub in elem.values() for i in sub])
else:
l.append(elem)
out[k] = l
else:
out[k] = v
输出:
{'key1': 'value1',
'key2': [{'key3': 'value3'}, {'key5': 'value5'}, {'key6': 'value6'}]}
推荐阅读
- search - solr 加入多租户数据
- reactjs - 在 Reactjs 中实现硬编码 Auth 的问题
- python - 如何在 python 中使用 z3c.rml 生成 PDF 报告
- zkemkeeper - ZKEMKeeper 没有禁用用户
- python - 导入 matplotlib 时导致 Python 出错的原因是什么?
- python - 用于变量 += 用户输入的 for 循环
- java - Jenkins 声纳报告生成失败
- postman - 如何使用我的帖子并离线登录您的帐户
- c# - 使用 Sqlite 命令 C# foreach 进入 foreach
- python-3.x - 有没有办法在 IIS 服务器上部署 FastAPI?