python - 如何将具有特定位置的值的新键插入字典?
问题描述
我有一个像这样的巨大字典列表,其中包含近 100 个条目。
[{ "color":-65536,
"touch_size":0.21960786,
"touch_x":831.25,
"touch_y":1597.2656
},
{ "color":-65536,
"touch_size":0.20392159,
"touch_x":1302.5,
"touch_y":1496.0938
}, .... {}]
我想在每个字典的特定位置插入 2 个带有值的新键。
new_keys = ['touch_x_dp','touch_y_dp']
touch_x_dp
需要放置在 key 之后touch_x
,并且touch_y_dp
需要放置在touch_y
这些值之后需要使用 None 进行初始化。
我已经尝试过了,但这并没有把它们放在我需要的地方。
for key in dp_keys:data['attempts'][i]["items"][j][key]=None
解决方案
如果您的 Python 是 3.7+,您可以执行以下操作:
data = [{"color": -65536,
"touch_size": 0.21960786,
"touch_x": 831.25,
"touch_y": 1597.2656
},
{"color": -65536,
"touch_size": 0.20392159,
"touch_x": 1302.5,
"touch_y": 1496.0938
}]
fields_order = ["color", "touch_size", "touch_x", "touch_x_dp", "touch_y", "touch_y_dp"]
payload = []
for d in data:
entity = dict([(f, d.get(f)) for f in fields_order])
payload.append(entity)
print(payload)
# output: [{'color': -65536, 'touch_size': 0.21960786, 'touch_x': 831.25, 'touch_x_dp': None, 'touch_y': 1597.2656, 'touch_y_dp': None}, {'color': -65536, 'touch_size': 0.20392159, 'touch_x': 1302.5, 'touch_x_dp': None, 'touch_y': 1496.0938, 'touch_y_dp': None}]
对于 Python<3.7,您应该使用OrderedDict
:
from collections import OrderedDict
fields_order = ["color", "touch_size", "touch_x", "touch_x_dp", "touch_y", "touch_y_dp"]
payload = []
for d in data:
entity = OrderedDict([(f, d.get(f)) for f in fields_order])
payload.append(entity)
print(payload)
推荐阅读
- android-security - 广播接收器安全问题
- python - 具有从数据框 pandas 中的两列构建的线性回归模型的 fillna
- python - Pytorch torch.load ModuleNotFoundError:没有名为“utils”的模块
- python - nginx + uwsgi + flask + selenium Selenium 驱动程序未打开
- swift - RealmSwift 不保存属性
- android - Google Play 控制台显示我的应用获得了后台位置权限,但我的应用没有
- vue.js - Vuejs上下文中chartjs的闪烁图表和getcontext错误
- java - 当请求没有匹配的 API 时,为什么我的控制器调用不同的 API?
- javascript - 未捕获的 ReferenceError:AddAnime 未在 HTMLInputElement.onclick 中定义(AnimeSite.html:51)
- google-drive-api - 如何访问应用程序数据文件夹中的所有文件