我正在“解析”一个3d网格,收集重复的循环。我没有准确地知道进入点,但是我的算法在两个方向上“走”网格。首先从0开始,然后从0开始。然后,我需要将收集的信息转换为简单的有序集合。
我设法使用从-i到j的键来实现dict [int,SomeContainerFor3D]。
我可以以某种方式对其进行排序并输出到基于0的集合中吗?或者有更简单的方法来解决这个问题吗?
编辑:因为我无法将整个3D网格与实际算法一起附加,所以我建立了一个问题模型为MCVE:
import random
condo = ["Stoker", "Laundryboy", "Receptionist", "Mr Z", "Mr J", "The S Family", "The M Family", "Mr Rich"]
entry_point = random.randint(0, len(condo)-1)
occupants_map = {}
""":type : dict [int, string]"""
def burglar(current):
unknownlocation = entry_point+current
if unknownlocation < len(condo) and unknownlocation >= 0:
doorlabel = condo[unknownlocation]
occupants_map[current] = doorlabel
return True
else:
return False
current = 0
while burglar(current) == True:
current += 1
current = -1
while burglar(current) == True:
current -= 1
print(occupants_map)
它按顺序打印出奇怪的正键,然后以奇怪的无序方式输出负键。
接下来,我将尝试对dict进行排序,并将相同的占用者地图输出到仅具有正索引的已排序集合。我仍然会感谢你的帮助。
答案 0 :(得分:0)
是的,所以在提示后我管理了上述代码的原始结果:
{0: 'The S Family', 1: 'The M Family', 2: 'Mr Rich', -1: 'Mr J', -5: 'Stoker', -4: 'Laundryboy', -3: 'Receptionist', -2: 'Mr Z'}
通过:
dict2 = OrderedDict (sorted(occupants_map.items() ) )
list = dict2.values()
print(list)
列表:
['Stoker', 'Laundryboy', 'Receptionist', 'Mr Z', 'Mr J', 'The S Family', 'The M Family', 'Mr Rich']
这是基于0,有序和可迭代的。这就是我想要的。
(我想我也可以使用OrderedDict本身作为有序和可迭代的集合,这取决于我是否需要更容易访问我的入口点,或者开始网格。)