簡體   English   中英

如何轉換這個 dict 輸出?

[英]How to transform this dict output?

我有一點邏輯游戲。 我在每個列表節點中有以下字典的列表。

{1: [1,{'X': -0.48595, 'Y': 0.0, 'Z': 0.56283},
     2,{'X': -0.48595, 'Y': 0.0, 'Z': -0.6}],
 2: [2,{'X': -0.48595, 'Y': 0.0, 'Z': -0.6},
     4,{'X': 1.14756, 'Y': 0.0, 'Z': -0.6}],
 3: [4,{'X': 1.14756, 'Y': 0.0, 'Z': -0.6},
     9,{'X': 1.14756, 'Y': 0.0, 'Z': 0.8}]}

我想要的是? 列表節點列表如下:

[{'Id': 1, 'Nodes': [{'Id': 1, 'Position': {'X': -0.48595, 'Y': 0.0, 'Z': 0.56283}}, 
                     {'Id': 2, 'Position': {'X': -0.48595, 'Y': 0.0, 'Z': -0.6}}]}, 
 {'Id': 2, 'Nodes': [{'Id': 2, 'Position': {'X': -0.48595, 'Y': 0.0, 'Z': -0.6}}, 
                     {'Id': 4, 'Position': {'X': 1.14756, 'Y': 0.0, 'Z': -0.6}}]}, 
 {'Id': 3, 'Nodes': [{'Id': 4, 'Position': {'X': 1.14756, 'Y': 0.0, 'Z': -0.6}}, 
                     {'Id': 9, 'Position': {'X': 1.14756, 'Y': 0.0, 'Z': 0.8}}]}]

我怎樣才能進行這種轉變? 我一直在嘗試修改我的代碼,但每次都出現問題。

mem_list = []
for x in range(len(list_temp)):
    mem_loc_list = []
    for key in list_temp[x]:
        nodes_list = []
        member = {}
        member['Id'] = key
        node_dict = {}
        for y in list_temp[x][key]:
            if type(y) == int:
                node_dict['Id'] = y
            else:
                node_dict['Position'] = y
            nodes_list.append(node_dict)
        member['Nodes'] = nodes_list
        mem_loc_list.append(member)

使用列表理解,你可以這樣做:

[[{"Id": k, "Nodes": [{"Id": v[i], "Position": v[i+1]} for i in range(0, len(v), 2)]} 
 for k,v in data.items()] for data in list_temp]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM