在python中重命名字典键/值

时间:2010-09-11 19:51:40

标签: python dictionary

我想要做的就是这个。我有一本字典:

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 个答案:

答案 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:]来执行替换,然后使用正则表达式。)