首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Python中的嵌套字典中更改键

如何在Python中的嵌套字典中更改键
EN

Stack Overflow用户
提问于 2021-08-26 13:43:27
回答 2查看 75关注 0票数 0

我有下面的嵌套字典,我想让它更易读。

代码语言:javascript
运行
复制
 {'sys_time': '26/08/2021 13:08:19', 'codecid': 8, 'no_record_i': 1, 'no_record_e': 1, 'crc-16': 47289, 'd_time_unix': 1629979644000, 'd_time_local': '2021-08-26 13:07:24', 'priority': 0, 'lon': 0, 'lat': 0, 'alt': 0, 'angle': 0, 'satellites': 0, 'speed': 0, 'io_data': {'n1': {239: 1, 240: 1, 80: 1, 21: 4, 200: 0, 69: 2}, 'n2': {181: 0, 182: 0, 66: 14122, 24: 0, 67: 0, 68: 0}, 'n4': {241: 26806, 16: 0}}, 'imei': '359633104643825'}

在我的脚本中,我做了以下工作:

代码语言:javascript
运行
复制
d1 = {'sys_time': 'System time', 'codecid': 'Codec ID', 'no_record_i': 'Number of records i', 'no_record_e': 'Number of records e', 'crc-16': 'CRC-16', 'd_time_unix': 'Time Unix', 'd_time_local': 'Time Local', 'priority': 'Priority', 'lon': 'Longitude', 'lat': 'Latitude', 'alt': 'Altitude', 'angle': 'Angle', 'satellites': 'Satellites', 'speed': 'Speed', 'io_data': 'IO Data', 'imei': 'IMEI'}
                
dictionary1 = dict((d1[key], value) for (key, value) in vars.items())
               
print("dictionary1", dictionary1)

其结果是:

代码语言:javascript
运行
复制
dictionary1 {'System time': '26/08/2021 12:55:52', 'Codec ID': 8, 'Number of records i': 7, 'Number of records e': 7, 'CRC-16': 8664, 'Time Unix': 1629978933000, 'Time Local': '2021-08-26 12:55:33', 'Priority': 0, 'Longitude': 0, 'Latitude': 0, 'Altitude': 0, 'Angle': 0, 'Satellites': 0, 'Speed': 0, 'IO Data': {'n1': {239: 1, 240: 1, 80: 1, 21: 4, 200: 0, 69: 2}, 'n2': {181: 0, 182: 0, 66: 14132, 24: 0, 67: 0, 68: 0}, 'n4': {241: 26806, 16: 0}}, 'IMEI': '359633104643825'}

我想对'IO数据‘('n1','n2’等)做同样的事情。我试着做:

代码语言:javascript
运行
复制
dn1 = {'239': 'Ignition', '240': 'Movement', '80': 'Data Mode', '21': 'GSM Signal',
                       '200': 'Sleep Mode', '69': 'GNSS Status'}

dictionary2 = dict((dn1[key], value) for (key, value) in dictionary1['IO Data']['n1'].items())
print("dictionary2", dictionary2)

但我说'239‘时出错了。这意味着“239”根本不存在。

如何更改嵌套字典中的键?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-26 13:59:35

只需将dn1更改为以下内容:

代码语言:javascript
运行
复制
dn1 = {239: 'Ignition', 240: 'Movement', 80: 'Data Mode', 21: 'GSM Signal',
                       200: 'Sleep Mode', 69: 'GNSS Status'}

注意:我从dn1中的键中删除了引号。

键在dictionary1['IO Data']['n1']中为int类型,而dn1将映射为str

以下是整个代码:

代码语言:javascript
运行
复制
vars = {'sys_time': '26/08/2021 13:08:19', 'codecid': 8, 'no_record_i': 1, 'no_record_e': 1, 'crc-16': 47289, 'd_time_unix': 1629979644000, 'd_time_local': '2021-08-26 13:07:24', 'priority': 0, 'lon': 0, 'lat': 0, 'alt': 0, 'angle': 0, 'satellites': 0, 'speed': 0, 'io_data': {'n1': {239: 1, 240: 1, 80: 1, 21: 4, 200: 0, 69: 2}, 'n2': {181: 0, 182: 0, 66: 14122, 24: 0, 67: 0, 68: 0}, 'n4': {241: 26806, 16: 0}}, 'imei': '359633104643825'}

d1 = {'sys_time': 'System time', 'codecid': 'Codec ID', 'no_record_i': 'Number of records i', 'no_record_e': 'Number of records e', 'crc-16': 'CRC-16', 'd_time_unix': 'Time Unix', 'd_time_local': 'Time Local', 'priority': 'Priority', 'lon': 'Longitude', 'lat': 'Latitude', 'alt': 'Altitude', 'angle': 'Angle', 'satellites': 'Satellites', 'speed': 'Speed', 'io_data': 'IO Data', 'imei': 'IMEI'}
                
dictionary1 = dict((d1[key], value) for (key, value) in vars.items())
               
print("dictionary1", dictionary1)
dn1 = {239: 'Ignition', 240: 'Movement', 80: 'Data Mode', 21: 'GSM Signal',
                       200: 'Sleep Mode', 69: 'GNSS Status'}

dictionary2 = dict((dn1[key], value) for (key, value) in dictionary1['IO Data']['n1'].items())
print("dictionary2", dictionary2)

或者,如果您想使用问题中提供的相同的dn1,请使用以下代码:

代码语言:javascript
运行
复制
dictionary2 = dict((dn1[str(key)], value) for (key, value) in dictionary1['IO Data']['n1'].items())
票数 0
EN

Stack Overflow用户

发布于 2021-08-26 14:06:26

dn1中的键为string类型,而dictionary1'IO Data‘..items()中的键为int类型。你需要匹配的类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68939681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档