我正在尝试按顺序返回用户输入的单词和数字列表,但是当我运行模块时,输入单词,并按值顺序打印None而不是条目和值。
dictionary = []
value = []
addterm1 = raw_input("Enter a term you would like to add to the dictionary: ")
addterm2 = raw_input("Enter a term you would like to add to the dictionary: ")
addterm3 = raw_input("Enter a term you would like to add to the dictionary: ")
addvalue1 = float(raw_input("Enter a number you would like to add to the set of values: "))
addvalue2 = float(raw_input("Enter a number you would like to add to the set of values: "))
addvalue3 = float(raw_input("Enter a number you would like to add to the set of values: "))
dictionary.append(addterm1)
dictionary.append(addterm2)
dictionary.append(addterm3)
value.append(addvalue1)
value.append(addvalue2)
value.append(addvalue3)
def reverseLookup(dictionary, value):
print dictionary.sort()
print value.sort()
if __name__ == '__main__':
reverseLookup(dictionary, value)
答案 0 :(得分:1)
.sort()
方法不会return
已排序的可迭代,它会对就地进行排序。您需要sort
,然后 print
:
dictionary.sort()
print(dictionary)
或者,使用sorted()
函数,该函数执行return
已排序的iterable:
print(sorted(dictionary))
答案 1 :(得分:0)
list.sort
是一种就地方法,因此始终返回None
。因此,任何对它的调用都应该放在他们自己的行上。
如果您仍想使用list.sort
:
def reverseLookup(dictionary, value):
dictionary.sort()
value.sort()
print dictionary
print value
或者,您可以使用sorted
:
def reverseLookup(dictionary, value):
print sorted(dictionary)
print sorted(value)
另外,您可能希望为dictionary
选择一个不同的名称,因为它是一个列表,而不是dictionary。
答案 2 :(得分:0)
有两种不同的功能。 sorted()
和list.sort()
(您现在正在使用的那个)。
sorted()
返回排序列表。例如:
>>> a = [3, 1, 5, 2, 4]
>>> print sorted(a)
[1, 2, 3, 4, 5]
这可能是你想要做的。
list.sort()
功能完全相同的方式。但是,它不会返回排序列表。相反,它对列表就地进行排序。
>>> a = [3, 1, 5, 2, 4]
>>> a.sort()
>>> print a
[1, 2, 3, 4, 5]
python中的大多数就地函数返回None
。所以你要做的是:
>>> a = [3, 1, 5, 2, 4]
>>> a = a.sort()
>>> print a
None
要修复代码,您可以执行print sorted(dictionary)
和print sorted(values)