问个 Python 代码的小问题,困扰了半天。不会解。

2020-04-29 09:41:08 +08:00
 Tianny
a = [{a: 1}, {b: 2}, {c: 3}]
b = [[c, b], [c, a], [b, a], [c, b, a]]

问题:求 b 里面每个列表的元素在 a 的字典里面对应的值的和。算出这些值后,再取出最大值。 比如 [c,b] 这个集合,那么它的值就是 就是 3+2 。[c,a] 的值就是 3+1 。以此类推。这些值都算出来后,再从中取个最大的。

希望大佬们能给个详细的代码。谢谢。

3845 次点击
所在节点    Python
22 条回复
Tianny
2020-04-29 17:41:53 +08:00
感谢各位~
lizhenjia569
2020-05-01 19:37:07 +08:00
首先请楼主明确提问代码中的数据类型!

1 、a 是字典还是列表?如果是列表,其中的元素是字典吗?字典只有一个元素吗?每个字典元素会存在重复键吗?
2 、a 、b 、c 是不同的变量还是键名?如果是键名最好使用字符串形式给出。

a 是一个列表:可以参考 @xpresslink 的代码使用 ChainMap

a 是一个字典:可以使用 max 和 sum 函数对 列表进行迭代:

max((sum((a[e] for e in ele if a.get(e))) for ele in b))

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/667168

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX