mobs = {
'world': {
0: {'mID': 255, 'xPos': 29, 'yPos': 45}
1: {'mID': 784, 'xPos': 34, 'yPos': 84}
},
'village': {
0: {'mID': 256, 'xPos': 77, 'yPos': 25}
1: {'mID': 67, 'xPos': 92, 'yPos': 16}
2: {'mID': 998, 'xPos': 8, 'yPos': 5}
},
}
我希望在“世界”中增加xPos
mID
= x的位置。 dict,但不确定如何指向它
我是否必须遍历world
中的每条记录并检查if mID = x
,还是有更快捷的方法?
(更新)
x = 784
for row in mobs['world']:
if mobs['world'][row]['ID'] == x:
mobs['world'][row]['xPos'] -= 1
答案 0 :(得分:0)
如果您的更改仅适用于world
子字典,则可以执行以下操作:
x = 784
for key, value in mobs['world'].items():
if value['mID'] == x:
mobs['world'][key]['xPos'] += 1
<强>输出:强>
>>> from pprint import pprint
>>>
>>> mobs = {
... 'world': {
... 0: {'mID': 255, 'xPos': 29, 'yPos': 45},
... 1: {'mID': 784, 'xPos': 34, 'yPos': 84}
... },
... 'village': {
... 0: {'mID': 256, 'xPos': 77, 'yPos': 25},
... 1: {'mID': 67, 'xPos': 92, 'yPos': 16},
... 2: {'mID': 998, 'xPos': 8, 'yPos': 5}
... },
... }
>>>
>>> x = 784
>>> for key, value in mobs['world'].items():
... if value['mID'] == x:
... mobs['world'][key]['xPos'] += 1
...
>>> pprint(mobs)
{'village': {0: {'mID': 256, 'xPos': 77, 'yPos': 25},
1: {'mID': 67, 'xPos': 92, 'yPos': 16},
2: {'mID': 998, 'xPos': 8, 'yPos': 5}},
'world': {0: {'mID': 255, 'xPos': 29, 'yPos': 45},
1: {'mID': 784, 'xPos': 35, 'yPos': 84}}}
答案 1 :(得分:0)
使用您给定的数据结构,您需要迭代字典,以便测试mID
并增加xPos
。可以使用以下简单代码更新字典:
x = 784
for mob in mobs['world'].values():
if mob['mID'] == x:
mob['xPos'] += 1
这会迭代mobs['world']
中包含的词典的值,将mID
与目标值进行比较,并在匹配时递增xPos
。增量是有效的,因为字典是可变的。