这是我的口述表:
{frame:{point:Vector}}
我需要重新构建/订购它来得到这样的东西:
{point:{frame:Vector}}
下面是一个代码示例:
{1: {'pt0': Vector((0.09608151018619537, 0.1202411875128746)),
'pt1': Vector((0.3969220519065857, 0.2085522711277008)),
'pt2': Vector((0.3969220519065857, 0.7914475202560425)),
'pt3': Vector((0.09608148038387299, 0.8797586560249329))},
2: {'pt0': Vector((0.09217172116041183, 0.1268879920244217)),
'pt1': Vector((0.4093528687953949, 0.20748035609722137)),
'pt2': Vector((0.4093528687953949, 0.7925194501876831)),
'pt3': Vector((0.09217172116041183, 0.8731117844581604))}}
这是我需要的(向量值不好,手工输入…):
{'pt0': {1: Vector((0.09608151018619537, 0.1202411875128746)),
2: Vector((0.09217172116041183, 0.1268879920244217))},
'pt1': {1: Vector((0.3969220519065857, 0.2085522711277008)),
2: Vector((0.4093528687953949, 0.20748035609722137))},
'pt2': {1: Vector((0.09608151018619537, 0.1202411875128746)),
2: Vector((0.09217172116041183, 0.1268879920244217))},
'pt3': {1: Vector((0.09608151018619537, 0.1202411875128746)),
2: Vector((0.09217172116041183, 0.1268879920244217))}}
非常感谢!你知道吗
想想你会做的循环,用英语来说:
对于每个帧,对于每个点,在新的dict中找到该点,然后在该点下添加帧。你知道吗
要将其转换为Python,我们需要添加几个细节:提前创建新dict,如果“find”没有找到它,则为该点创建子dict。但除此之外,这是一个微不足道的翻译:
很明显,您可以通过去掉一些中间步骤,使用
defaultdict
或setdefault
方法而不是in
检查来压缩这个过程,但我将把这些作为练习留给读者。你知道吗作为一个更好的改进,如果您需要不止一次地执行此操作,您可以将其归纳为适用于任何多级字典的
swap_levels(olddict, level1=0, level2=1)
函数,因此您可以这样编写:相关问题 更多 >
编程相关推荐