list.index()不太合适

时间:2013-12-09 19:22:11

标签: python

我正在将这段代码用于我需要为朋友设计的小程序。问题是无法让它发挥作用。

我正在设计一个使用蔬菜和水果清单的程序。 例如我的列表是:

smallist = [["apple", 2], ["banana", 3], ["strawberry",1]]
item = input("Please give the name of the fruit\n\n")

smallist.index(item)
print (smallist)

问题是当我尝试找到让我们说苹果的索引时。我只是说苹果不存在。

smallist.index(item)
ValueError: 'apple' is not in list

我无法弄清楚为什么它不会向我展示苹果的价值,在这种情况下它将是2

2 个答案:

答案 0 :(得分:5)

apple smallist中不是。它位于smallist内的嵌套列表中。

你必须用循环搜索它:

for i, nested in enumerate(smallist):
    if item in nested:
        print(i)
        break

此处enumerate()为我们创建了一个运行索引,同时循环遍历smallist,以便我们可以打印找到它的索引。

如果你想要做的是打印另一个值,我们不需要索引:

for name, count in smallist:
    if name == item:
        print(count)
        break

但是在这里使用字典会更容易:

small_dict = dict(smallist)
print(small_dict.get(item, 'Not found'))

答案 1 :(得分:0)

“apple”不在smallist,[“apple”,2]是。

您的数据会更好地融入字典:

smaldict = {'apple': 2, 'banana': 3, 'strawberry': 1}

item = input("Please give the name of the fruit\n\n")
if item in smaldict:
    print(smaldict[item])
else:
    print('"{item}" is not in the dictionary.'.format(item=item))