如何在python中比较list/array/dict中的对应元素
假设您有两个列表(或任何类型的分组,哪一个并不重要),其中包含表示牛奶、鸡蛋和面粉的变量。例如:如何在python中比较list/array/dict中的对应元素,python,python-3.x,list,comparison,Python,Python 3.x,List,Comparison,假设您有两个列表(或任何类型的分组,哪一个并不重要),其中包含表示牛奶、鸡蛋和面粉的变量。例如: have = {"milk": 2, "eggs": 3, "flour": 0.5} need = {"milk": 1, "eggs": 5, "flour": 2.5} ingredients = {i:"Yes" if have[i] >= nee
have = {"milk": 2, "eggs": 3, "flour": 0.5}
need = {"milk": 1, "eggs": 5, "flour": 2.5}
ingredients = {i:"Yes" if have[i] >= need[i] else "No" for i in have.keys()}
吃(牛奶、鸡蛋、面粉)
及
需要(牛奶、鸡蛋、面粉)
如何确定每个元素>=、==或是否可以使用字典。例如:
have = {"milk": 2, "eggs": 3, "flour": 0.5}
need = {"milk": 1, "eggs": 5, "flour": 2.5}
ingredients = {i:"Yes" if have[i] >= need[i] else "No" for i in have.keys()}
输出:
print(ingredients)
{'milk': 'Yes', 'eggs': 'No', 'flour': 'No'}
如果你想要一个功能,告诉你有多少蛋糕可以用你的原料,你可以使用以下:
def how_many(need, have):
results = {i:have[i]//need[i] for i in have.keys()}
return min(results.values())
如果需要比较的数量列表,可以使用单行列表理解(只能比较==,>,<否则,如果使用>=和i[1]else'将输入假设为以下内容,则它们将是重叠操作
milk=200
eggs=10
flour=1000
milk_reqd=100
eggs_reqd=5
flour_reqd=2000
have=[milk, eggs, flour]
need=[milk_reqd, eggs_reqd, flour_reqd]
解决方案
import numpy as np
have=np.array(have)
need=np.array(need)
现在您可以执行以下所有操作:
need>have
或
获取可以制作的蛋糕数量
n_cakes=int(min(have/need))
输出:
{'eggs':1,'floor':1,'k':0,'milk':1}
假设,牛奶
,鸡蛋
,面粉
是类对象
,通常应该有一个属性指定数量(牛奶.quantity
和鸡蛋.quantity
)。由于这些值是数值,您可以使用算术运算符。请通过示例提供有关您的查询的更多信息(如果可行)变量的要点是存储数量:鸡蛋=2表示有2个鸡蛋,牛奶=3表示有3杯牛奶。因此,如果我需要2个鸡蛋、1杯牛奶和1杯面粉,但我有4个鸡蛋、5杯牛奶和3杯面粉,我希望它能返回2个蛋糕。这是一个相当模糊的问题,因为你没有指定数据布局或方法,所以很难确定在代码中设置一个具体的答案。也就是说,你可以循环索引或标签来比较每一对,不管你需要什么,并将结果存储在另一个“分组”中,不需要Tolstoy!谢谢你,Anant。我已经在这方面停留太久了,甚至没有考虑使用NumPy(我在这方面还是很新的),你是一个救生员。
need<=have
need-have
n_cakes=int(min(have/need))
have = ('milk', 'eggs', 'flour',"k")
need = ('milk', 'eggs', 'flour',"l")
incredients = {}
for i in range(len(have)):
count = 0
if have[i] == need[i]:
count +=1
incredients[have[i]] = count