我想要做的就是这个。我有一本字典:
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 _
答案 0 :(得分: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:]
来执行替换,然后使用正则表达式。)