gpt4 book ai didi

python - 在 python 中重命名字典键/值

转载 作者:太空宇宙 更新时间:2023-11-04 01:42:20 26 4
gpt4 key购买 nike

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

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)

显然我没有正确执行此操作,那么我该怎么做呢?我应该创建一个空字典并在运行时用必要的数据填充它吗?或者有更好的方法吗?感谢您的帮助!

[edit] 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_

最佳答案

然后对列表的每个元素进行替换。

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

关于python - 在 python 中重命名字典键/值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3692430/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com