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