尝试按顺序返回值列表和单词

时间:2013-12-22 00:19:14

标签: python

我正在尝试按顺序返回用户输入的单词和数字列表,但是当我运行模块时,输入单词,并按值顺序打印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)

3 个答案:

答案 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)