在Python中重命名字典的键/值
我想做的是这样的。我有一个字典,结构是这样的:
legJointConnectors = {'L_hip_jnt': ['L_knee_jnt'], 'L_knee_jnt': ['L_ankle_jnt'], 'L_ankle_jnt': ['L_ball_jnt'], 'L_ball_jnt': ['L_toe_jnt']}
我想要做的是遍历这个字典,但把字典里的 L_ 改成 R_。我尝试过这样做,但失败了,因为它期待的是一个字符串,而我传入的是一个列表。
for key, value in legJointConnectors.iteritems():
if side == 'L':
cmds.connectJoint(value, key, pm=True)
else:
key = re.sub('L_', 'R_', key)
value = re.sub('L_', 'R_', value)
cmds.connectJoint(value, key, pm=True)
显然我没有正确地做到这一点,那我该怎么做呢?我应该创建一个空字典,然后动态地填充必要的数据吗?还是有更好的方法?谢谢大家的帮助!
[编辑] 这里的 if side == 'L' 是在检查我们当前正在处理哪一侧。这个脚本是在 Maya 里使用的,所以我根据侧别创建关节,然后把它们连接起来。
根据 KennyTM 的建议,我尝试了这个:
for key, value in legJointConnectors.iteritems():
if side == 'L':
cmds.connectJoint(value, key, pm=True)
else:
for v in value:
value = 'R_' + v[2:]
for k in key:
key = 'R_' + k[2:]
print key
print value
但是虽然它返回了正确的键,但值却变成了 R_。
1 个回答
3
那就对列表中的每个元素都进行替换吧。
for key, value in legJointConnectors.iteritems():
if side != 'L':
key = 'R_' + key[2:]
value = ['R_' + v[2:] for v in value]
cmds.connectJoint(value, key, pm=True)
顺便说一下,使用 v.replace('L_', 'R_')
或者直接用 'R_' + v[2:]
来进行替换会更好,而不是用正则表达式。