我有两个列表;材料及其相应的数量
例如,列表为:words=["banana","apple","orange","bike","car"]
和numbers=[1,5,2,5,1]
使用这些列表,我如何确定哪一个项目的数量最少,哪一个的项目数量最多
我不知道从哪里开始谢谢!
使用zip
匹配相应的单词和数字:
>>> words = ["banana", "apple", "orange", "bike", "car"]
>>> numbers = [1, 5, 2, 5, 1]
>>> list(zip(words, numbers))
[('banana', 1), ('apple', 5), ('orange', 2), ('bike', 5), ('car', 1)]
如果你将它们zip
到(number, word)
对,你可以直接在这些对上使用min
和max
来获得最小/最大组合:
>>> min(zip(numbers, words))
(1, 'banana')
>>> max(zip(numbers, words))
(5, 'bike')
或者从(word, number)
对创建一个dict
,并在其上使用min
和max
。这只会给你单词,但你可以从dict:中获得相应的数字
>>> d = dict(zip(words, numbers))
>>> d
{'apple': 5, 'banana': 1, 'bike': 5, 'car': 1, 'orange': 2}
>>> min(d, key=d.get)
'banana'
>>> max(d, key=d.get)
'apple'
from operator import itemgetter
words = ["banana", "apple", "orange", "bike", "car"]
numbers = [1, 5, 2, 5, 1]
min_item = min(zip(words, numbers), key=itemgetter(1))
max_item = max(zip(words, numbers), key=itemgetter(1))
print("The min item was {} with a count of {}".format(*min_item))
print("The max item was {} with a count of {}".format(*max_item))
输出:
The min item was banana with a count of 1
The max item was apple with a count of 5
>>>
保持简单:如果你只想要一个最少和最多的项目
words=["banana","apple","orange","bike","car"]
numbers=[1,5,2,5,1]
# get least and most amounts using max and min
least_amount = min(numbers)
most_amount=max(numbers)
# get fruit with least amount using index
index_of_least_amount = numbers.index(least_amount)
index_of_most_amount = numbers.index(most_amount)
# fruit with least amount
print(words[index_of_least_amount])
# fruit with most amount
print(words[index_of_most_amount])
words = ["banana","apple","orange","bike","car"]
numbers = [1, 5, 2, 5, 1]
# Make a dict, is easier
adict = {k:v for k,v in zip(words, numbers)}
# Get maximums and minimums
min_value = min(adict.values())
max_value = max(adict.values())
# Here are the results, both material and values. You have also those which are tied
min_materials = {k,v for k,v in adict if v == min_value}
max_materials = {k,v for k,v in adict if v == max_value}
您应该使用字典或元组列表来处理以下内容:
words=["banana","apple","orange","bike","car"]
numbers=[1,5,2,5,1]
dicti = {}
for i in range(len(words)):
dicti[words[i]] = numbers[i]
print(dicti["banana"]) #1
结果dict
{'banana': 1, 'apple': 5, 'orange': 2, 'bike': 5, 'car': 1}
以下是如何使用元组列表获得最大值和最小值
words=["banana","apple","orange","bike","car"]
numbers=[1,5,2,5,1]
numMax = max(numbers)
numMin = min(numbers)
print([x for x,y in zip(words, numbers) if y == numMax ]) #maxes
print([x for x,y in zip(words, numbers) if y == numMin ]) #mins