python 嵌套字典key_查找和修改python嵌套字典(key,value)
我有一个json文件需要更新。我将它转换为python dict(嵌套)来更新它。这是输入,但可以是任何部门。我相信有更好的方法来做这件事,但不知道。在
最后通牒除了更新之外,我还想执行创建/删除操作。在
这是脚本和输入文件# Now find TARGET value in nested key value chain
# Replace old value with NEWVALUE
import json
from pprint import pprint
d1 = open('jinputstack.json', 'r')
d1 = json.load(d1)
def traverse(obj, path=None, callback=None):
"""
Traverse Python object structure, calling a callback function for every element in the structure,
and inserting the return value of the callback as the new value.
"""
if path is None:
path = []
if isinstance(obj, dict):
value = {k: traverse(v, path + [k], callback)
for k, v in obj.items()}
elif isinstance(obj, list):
value = [traverse(elem, path + [[]], callback)
for elem in obj]
else:
value = obj
if callback is None:
# print("Starting value Found-----------------------------------------------------")
print(value)
return value
else:
print(path, value)
return callback(path, value)
def traverse_modify(obj, target_path, action):
"""
Traverses any arbitrary object structure and performs the given action on the value,
replacing the node with the
action's return value.
"""
target_path = to_path(target_path)
pprint(value)
pprint(target_path)
def transformer(path, value):
if path == target_path:
print(action)
d2 = data["groups"][0]["properties"][1]["value"]["data"][2]["object"]["name"].update(action)
return d2
else:
return value
return traverse(obj, callback=transformer)
def to_path(path):
"""
Helper function, converting path strings into path lists.
>>> to_path('foo')
['foo']
>>> to_path('foo.bar')
['foo', 'bar']
>>> to_path('foo.bar[]')
['foo', 'bar', []]
"""
if isinstance(path, list):
return path # already in list format
def _iter_path(path):
#pprint(path.split)
for parts in path.split('[]'):
for part in parts.strip('.').split('.'):
yield part
yield []
return list(_iter_path(path))[:-1]
def updateit(newvalue):
data["groups"][0]["properties"][1]["value"]["data"][2]["object"]["name"] = newvalue
print(data["groups"][0]["properties"][1]["value"]["data"][2]["object"]["name"])
return data["groups"][0]["properties"][1]["value"]["data"][2]["object"]["name"]
traverse_modify(d1, d1["groups"][0]["properties"][1]["value"]["data"][1]["object"]["name"], updateit("XXXXXXXXXXXXXX"))
json_data = json.dumps(data)
f = open("jinputstack.json","w")
f.write(json_data)
f.close()
^{pr2}$
作者:文森特·德里森
python 嵌套字典key_查找和修改python嵌套字典(key,value)相关推荐
- python中属性赋值查找_关于python:在dataframe列中查找字典的值并进行修改
我现在处理DataFrames和Dictionaries,我有一个问题, 我有一个词典"水果" {BN:'Banana', LM:'Lemon', AP:'Apple' ..... ...
- python设置路径_Python探索之修改Python搜索路径
当Python执行import语句时,它会在一些路径中搜索Python模块和扩展模块.可以通过sys.path查看这些路径,比如: >>> import sys >>&g ...
- python基础代码大全-【01】Python基础入门 (全)
一.字符串 1. 字符串切片 切片: name="abcdef" name[2:5]="cde" 跳取: name="abcdef" nam ...
- python black_如何使用Black自动格式化Python代码
python black Writing Python code is one thing and writing the code in a good format is another thing ...
- 12.从入门到精通:Python字典,创建字典,访问字典的值,修改字典,删除字典,字典键的特性,字典内置函数和方法
12.从入门到精通:Python字典,创建字典,访问字典的值,修改字典,删除字典,字典键的特性,字典内置函数和方法 Python字典 创建空字典 访问字典里的值 修改字典 删除字典元素 字典键的特性 ...
- python字符串用法详解(str、下标、切片、查找、修改、判断)
1. 认识字符串 字符串是 Python 中最常⽤的数据类型.⼀般使⽤引号来创建字符串.创建字符串很简单,只要为变量分配⼀个值即可. a = 'hello world' b = "abcde ...
- python英语字典程序修改_详解如何修改python中字典的键和值
我们知道python中字典是无序的,它们都是通过hash去对应的.一般的如果我们需要修改字典的值,只需要直接覆盖即可,而修改字典的键,则需要使用字典自带的pop函数,示例如下: t = {} t['a ...
- python修改列表中字典内的值_python修改字典内key对应值的方法
python学习笔记:字典 python版本:Python 2.6.6 系统环境:CentOS release 6.2 x86_64 本文参考了互联网上前辈的一些文章 一.字典是python中最灵活的 ...
- 《Python编程从入门到实践》记录之字典嵌套
目录 1.字典列表 2.在字典中存储列表 3.在字典中存储字典 1.字典列表 列表内元素是字典的形式. 字典列表例子:定义三个字典,每个包含颜色和点数两个键和其相关联的值,将其三个字典存储在一个了列表 ...
最新文章
- Blog 081018
- 转:linux svn常用命令
- Node与apidoc的邂逅——NodeJS Restful 的API文档生成
- (转)Mime类型与文件后缀对照表及探测文件MIME的方法
- #ifndef #define #endif 和#pragma once的区别
- python各个关键词的意思_想学好Python,你必须了解Python中的35个关键词
- axure rp pro 8.0 中文+破解补丁 v8.0.0.3333专业版
- 免费的MySQL数据库
- linux一键安装lamp教程,CentOS7下LAMP一键安装包教程
- python群发邮件 不进垃圾箱_邮件群发不进垃圾箱
- iOS IPv6测试环境搭建及服务器ipv6测试
- ch341a刷写华擎(ASROCK)主板BIOS教程
- Centos7值得收藏的网站
- 明日之后八级房怎么造?明日之后好看的八级房蓝图造型汇总
- amazeui分页打印
- 如何让60岁老人学会使用智能手机
- java 硬币_java实现硬币方案
- 均方误差(mean-square error, MSE)
- C语言高考志愿填报管理系统,高考志愿智能填报系统
- [软件发布]WAP网站在线浏览器 WapReader