无法在python中迭代二维数组并将项添加到字典中

时间:2015-09-03 21:13:57

标签: python arrays dictionary

这个程序应该做的是使用两个循环遍历数组并将第一组中的所有内容都取出来,这不是一个数字并将其变成一个键。密钥没有按照我期望的顺序添加到字典中。还有更多的课程,但这是给我带来麻烦的部分。

class Sorter(): 
def __init__(self, vals): 
    self.vals = vals

def borda(self): 
    bordaContainer = { }
    arrayLength = len(self.vals) 
    for outsides in range(arrayLength):
        for insides in range(len(self.vals[outsides])):
            currentChoice = self.vals[outsides][insides]
            if outsides ==0 and insides != len(self.vals[outsides])-1:
                bordaContainer[currentChoice] = ''
    return bordaContainer

inputArray = [['A','B','C','D',10],['C','D','B','A',4],['D','A','B','C',7]]
first = Sorter(inputArray)
print first.borda()

结果:

{'A': '', 'C': '', 'B': '', 'D': ''} 

我应该得到{' A':''' B':''' C&# 39;:'',' D':''}。对正在发生的事情的任何解释都会很棒,谢谢!

2 个答案:

答案 0 :(得分:4)

没有订购Dicts。您可能想要使用OrderedDict:https://pymotw.com/2/collections/ordereddict.html

答案 1 :(得分:1)

Python字典中包含hashable个对象作为键,除了它的顺序之外你不能。如果您尝试以下代码,您可以看到。

>>> d = {'a': 1, 'b': 2, 'c':3}
>>> d
{'a': 1, 'c': 3, 'b': 2}

您可以在集合中使用OrderedDict,如下所示。

>>> from collections import OrderedDict
>>> d1 = OrderedDict([('a', 1), ('c', 3), ('b', 2)])
>>> d1
OrderedDict([('a', 1), ('c', 3), ('b', 2)])
>>> for i in d1:
...     print i, d1[i]
... 
a 1
c 3
b 2