gpt4 book ai didi

python从单个列表理解中创建一个集合/字典/列表及其值的总和

转载 作者:行者123 更新时间:2023-11-28 21:57:42 26 4
gpt4 key购买 nike

我想知道是否需要两个列表理解来返回集合/字典/列表的有序对和集合/字典/列表中值的总和。这是我的意思的一个例子:

>>> l = ['abc', 'd', 'efgh', 'ij']
>>> {i: len(i) for i in l}, sum(len(i) for i in l)
({'efgh': 4, 'abc': 3, 'ij': 2, 'd': 1}, 10)

有没有比使用重复的 for i in l comprehensions 更好/更 pythonic 的方式来写这个?

更新:

我问这个问题是因为我在考虑编写特定 lambda 的最佳方式;即

>>> l = ['abc', 'd', 'efgh', 'ij']
>>> dict_value = lambda l: ({i: len(i) for i in l}, sum(len(i) for i in l))
>>> dict_value(l)
({'efgh': 4, 'abc': 3, 'ij': 2, 'd': 1}, 10)

我问这个问题是因为我不是使用 len() 来计算我想要的值,而是一个昂贵的计算。如果我定义辅助方法而不是 lambda 来完成工作,下面关于 for 循环的要点确实解决了问题。

最佳答案

您可以预先计算长度。我认为看起来更干净:

>>> l = ['abc', 'd', 'efgh', 'ij']
>>> llen = [len(i) for i in l]
>>> dict(zip(l,llen)), sum(llen)
({'abc': 3, 'd': 1, 'efgh': 4, 'ij': 2}, 10)

关于python从单个列表理解中创建一个集合/字典/列表及其值的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19503249/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com