json - 更改字典列表中的字典值
问题描述
{
"__class": "Tape",
"Clips": [
{
"__class": "MotionClip",
"Id": 4280596098,
"TrackId": 4094799440,
"IsActive": 1,
"StartTime": 180,
"Duration": 48,
"ClassifierPath": "world\/maps\/error\/timeline\/moves\/error_intro_walk.msm",
"GoldMove": 0,
"CoachId": 0,
"MoveType": 0,
{
"__class": "MotionClip",
"Id": 2393481294,
"TrackId": 4094799440,
"IsActive": 1,
"StartTime": 372,
"Duration": 48,
"ClassifierPath": "world\/maps\/error\/timeline\/moves\/error_ve_opening.msm",
"GoldMove": 0,
"CoachId": 0,
"MoveType": 0,
...
这是 json 文件的片段,我想在其中更改数字的显示方式。例如,我想将 1 写为 00000001,将 48 写为 00000048,将 0 写为 00000000。所以整个 json 文件中的所有数字都按照我之前所说的那样写。它们可以写成字符串。我不知道如何开始,因为我有字典列表。
解决方案
假设您的数据实际上看起来像这样 -
main_dict = {
"__class": "Tape",
"Clips": [
{
"__class": "MotionClip",
"Id": 4280596098,
"TrackId": 4094799440,
"IsActive": 1,
"StartTime": 180,
"Duration": 48,
"ClassifierPath": "world\/maps\/error\/timeline\/moves\/error_intro_walk.msm",
"GoldMove": 0,
"CoachId": 0,
"MoveType": 0,
},
{
"__class": "MotionClip",
"Id": 2393481294,
"TrackId": 4094799440,
"IsActive": 1,
"StartTime": 372,
"Duration": 48,
"ClassifierPath": "world\/maps\/error\/timeline\/moves\/error_ve_opening.msm",
"GoldMove": 0,
"CoachId": 0,
"MoveType": 0,
}
]
}
您可以执行以下操作 -
#Accessing a specific key in a dict, in this case Clips (list of dicts)
list_dicts = main_dict.get('Clips')
#Function to fix/edit specific values in the list of dict based on what key they belong to
def fix_value(k,v):
if k=='Duration':
return '00000'+str(v)
#Add more elseif in between with various things you wanna handle
else:
return v
#Iterating over each key, value in each dict in list of dicts and applying above function on the values
[{k:fix_value(k,v) for k,v in i.items()} for i in list_dicts]
结果 -
[{'__class': 'MotionClip',
'Id': 4280596098,
'TrackId': 4094799440,
'IsActive': 1,
'StartTime': 180,
'Duration': '0000048',
'ClassifierPath': 'world\\/maps\\/error\\/timeline\\/moves\\/error_intro_walk.msm',
'GoldMove': 0,
'CoachId': 0,
'MoveType': 0},
{'__class': 'MotionClip',
'Id': 2393481294,
'TrackId': 4094799440,
'IsActive': 1,
'StartTime': 372,
'Duration': '0000048',
'ClassifierPath': 'world\\/maps\\/error\\/timeline\\/moves\\/error_ve_opening.msm',
'GoldMove': 0,
'CoachId': 0,
'MoveType': 0}]
推荐阅读
- vue-component - nuxt 类组件。异步获取不起作用
- python - Selenium 无法在 ::before ::after 内定位元素
- database - 二级索引和非聚集索引有什么区别
- node.js - 无法通过护照本地策略登录
- kubernetes - 在 Linode 上使用 PV
- javascript - 在 JS 中卡住排序和分隔嵌套数组
- javascript - 如何从浏览器控制台调用服务进行调试?
- html - 如何将新帖子添加到 swiper.js html
- node.js - 为什么我在使用查询参数时无法在 mongo db postman 中获取错误
- postgresql - R2DBC邻接列表获取所有孩子