Python - 我需要一个带有负索引的集合

时间:2015-02-11 23:28:58

标签: python

我正在“解析”一个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进行排序,并将相同的占用者地图输出到仅具有正索引的已排序集合。我仍然会感谢你的帮助。

1 个答案:

答案 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本身作为有序和可迭代的集合,这取决于我是否需要更容易访问我的入口点,或者开始网格。)