在python中迭代二维数组和向字典中添加项时遇到麻烦



程序应该做的是使用两个循环遍历数组,并取第一个集合中所有非数字的内容并将其转换为键。键没有按我期望的顺序添加到字典中。这门课还有很多内容,但这部分让我很困扰。

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":"' D ':"}。任何解释正在发生的事情将是伟大的,谢谢!

字典没有排序。您可能想使用OrderedDict: https://pymotw.com/2/collections/ordereddict.html

如果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

相关内容

  • 没有找到相关文章

最新更新