Python 如何在嵌套字典列表中的特定键值之后插入键值?
我正在尝试在每个“名称”词典下的“操作”列表中插入/附加额外的“订阅”和“延迟”词典。 我在引用/识别正确的列表“名称”以附加“订阅”和“延迟”时遇到问题。订阅和延迟数据来自不同的excel工作表,唯一的链接数据是“名称”。 当前正在使用pandas导入excel数据Python 如何在嵌套字典列表中的特定键值之后插入键值?,python,python-3.x,Python,Python 3.x,我正在尝试在每个“名称”词典下的“操作”列表中插入/附加额外的“订阅”和“延迟”词典。 我在引用/识别正确的列表“名称”以附加“订阅”和“延迟”时遇到问题。订阅和延迟数据来自不同的excel工作表,唯一的链接数据是“名称”。 当前正在使用pandas导入excel数据 mydict = {'sequence': [{'name': 'Start 1', 'action': [{'subscribe': {'user': ['user 1', 'user 3'], 'delay': 120}},
mydict = {'sequence': [{'name': 'Start 1', 'action': [{'subscribe': {'user': ['user 1', 'user 3'], 'delay': 120}}, {'subscribe': {'user': ['user 2', 'user5'], 'delay': 20}}]}, {'name': 'Start 5', 'action': [{'subscribe': {'user': ['user 6', 'user 7'], 'delay': 100}}, {'subscribe': {'user': ['user 2', 'user5'], 'delay': 80}}]}]}
最终词典
newdata = {'subscribe': {'user': ['user X', 'user Y'], 'delay': Z}}
newdata2 = {'subscribe': {'user': ['user A', 'user B'], 'delay': C}}
我想做的是可能的吗?给定原始数据:
mydict = {'sequence': [{'name': 'Start 1', 'action': [{'subscribe': {'user': ['user 1', 'user 3'], 'delay': 120}}, {'subscribe': {'user': ['user 2', 'user5'], 'delay': 20}}, {'subscribe': {'user': ['user X', 'user Y'], 'delay': Z}}]}, {'name': 'Start 5', 'action': [{'subscribe': {'user': ['user 6', 'user 7'], 'delay': 100}}, {'subscribe': {'user': ['user 2', 'user5'], 'delay': 80}}, {'subscribe': {'user': ['user A', 'user B'], 'delay': C}}]}]}
使用mydict['sequence'][0],您可以获得:
mydict = {'sequence':
[ {'name': 'Start 1',
'action': [{'subscribe': {'user': ['user 1', 'user 3'], 'delay': 120}},
{'subscribe': {'user': ['user 2', 'user5'], 'delay': 20}}}]},
{'name': 'Start 5',
'action': [{'subscribe': {'user': ['user 6', 'user 7'], 'delay': 100}},
{'subscribe': {'user': ['user 2', 'user5'], 'delay': 80}}}]}
]}
如果您想将newdata
添加到mydict['sequence'][0]
中的操作中,您可以这样做
{'name': 'Start 1',
'action': [{'subscribe': {'user': ['user 1', 'user 3'], 'delay': 120}},
{'subscribe': {'user': ['user 2', 'user5'], 'delay': 20}}]}
类似地,如果要将newdata2添加到
mydict['sequence'][1]`中的操作,可以执行以下操作:
mydict['sequence'][0]['action'].append(newdata)
TL;博士
[out]:
mydict = {'sequence': [{'name': 'Start 1',
'action': [{'subscribe': {'user': ['user 1', 'user 3'], 'delay': 120}},
{'subscribe': {'user': ['user 2', 'user5'], 'delay': 20}}]},
{'name': 'Start 5',
'action': [{'subscribe': {'user': ['user 6', 'user 7'], 'delay': 100}},
{'subscribe': {'user': ['user 2', 'user5'], 'delay': 80}}]}]}
Z = 9999
C = 8888
newdata = {'subscribe': {'user': ['user X', 'user Y'], 'delay': Z}}
newdata2 = {'subscribe': {'user': ['user A', 'user B'], 'delay': C}}
mydict['sequence'][0]['action'].append(newdata)
mydict['sequence'][1]['action'].append(newdata2)
欢迎来到stackoverflow,请看一下。通常,最好在你的问题上加上你已经尝试过的东西,这样其他回答者会更愿意回答。希望答案有帮助,快乐编码!感谢您的回复,我正在尝试这样做,但是使用k:v搜索来识别索引。然后,您需要更具体一点,并解释如何“识别索引”,以及
a
和B
和X
和Y
。k:v搜索基于{'name':'value'}键/值,一旦正确识别正确的字典,然后将新数据添加到该“操作”。A、B、C、X、Y、Z是值变量。
mydict = {'sequence': [{'name': 'Start 1',
'action': [{'subscribe': {'user': ['user 1', 'user 3'], 'delay': 120}},
{'subscribe': {'user': ['user 2', 'user5'], 'delay': 20}}]},
{'name': 'Start 5',
'action': [{'subscribe': {'user': ['user 6', 'user 7'], 'delay': 100}},
{'subscribe': {'user': ['user 2', 'user5'], 'delay': 80}}]}]}
Z = 9999
C = 8888
newdata = {'subscribe': {'user': ['user X', 'user Y'], 'delay': Z}}
newdata2 = {'subscribe': {'user': ['user A', 'user B'], 'delay': C}}
mydict['sequence'][0]['action'].append(newdata)
mydict['sequence'][1]['action'].append(newdata2)
[{'name': 'Start 1',
'action': [{'subscribe': {'user': ['user 1', 'user 3'], 'delay': 120}},
{'subscribe': {'user': ['user 2', 'user5'], 'delay': 20}},
{'subscribe': {'user': ['user X', 'user Y'], 'delay': 9999}}]},
{'name': 'Start 5',
'action': [{'subscribe': {'user': ['user 6', 'user 7'], 'delay': 100}},
{'subscribe': {'user': ['user 2', 'user5'], 'delay': 80}},
{'subscribe': {'user': ['user A', 'user B'], 'delay': 8888}}]}]