对于二维列表[[“bacon”,“banana”],[“ham”,“salami”,“cheese”]]我想迭代为“bacon”,然后是“banana”,然后是“ham”,等等
sandwiches = [["bacon", "banana"], ["ham", "salami", "cheese"]]
preferences = ["bacon", 5, "ham", -2, "salami", 1]
在三明治阵列中,有两个三明治,培根+香蕉和火腿+萨拉米+奶酪。我想通过做这样的事情来知道每个三明治的分数(不起作用,但显示了我想做什么):
^{pr2}$当然,三明治里的j不起作用。我曾试着扰乱治安,但一无所获。怎么会这样?在
例如,我想要的输出是:
sandwichscores = [5, -1]
因为第一个三明治的配料综合得分为5,第二个三明治的综合得分为-1。不在偏好中的成分会被忽略。在
我想这就是您想要使用的逻辑,将其解压到嵌套的for循环中:
^{pr2}$正如我警告外星人说的,如果你用字典来计算分数,逻辑就简单得多:
下面是一个使用
groupby
的行程序:印刷品:
^{pr2}$三明治
['bacon', 'banana']
:培根5分,香蕉1000分,三明治得分1005分对于三明治
['ham', 'salami', 'cheese']
:火腿是-2,萨拉米是999,桑威奇分数是997这里有一个行程序,它可以满足您的需要;我将您的首选项列表转换为a dictionary,因为这是一个much more suitable data structure when you are storing key/value pairs:
输出:
^{pr2}$该解决方案使用^{} 将三明治成分的值相加,根据成分是否出现在
prefs
中进行过滤。在您可以更改输出格式以删除成分列表,并通过修改
[ ", ".join(i), sum( prefs[j] for j in i if j in prefs) ]
部分输出分数。我本以为知道哪个三明治得分很重要,但谁知道呢!在相关问题 更多 >
编程相关推荐