gpt4 book ai didi

python - 我怎样才能对字典中的数字列表进行平方?

转载 作者:太空宇宙 更新时间:2023-11-04 08:57:12 26 4
gpt4 key购买 nike

我想对 Python 字典中的所有值求平方,但我用了错误的方法。下面是我的尝试,显然失败了并产生了

TypeError: unsupported operand type(s)

程序是

tides = {'G3': [3, 8, 9, 7], 'G2': [2, 7], 'G1': [1, 6, 7]}

for v in tides.values():
print v**2

期望的输出是

{'G3': [9, 64, 81, 49], 'G2': [4, 49], 'G1': [1, 36, 49]}

最佳答案

dict.values给你一个项目列表,该列表的每个元素都是一个列表。因此,当您说 v ** 2 时,您实际上是在尝试对列表求平方,这在 Python 中是不可能的。这就是它失败的原因。

相反,只需像这样用字典理解重新创建字典

>>> tides = {'G3': [3, 8, 9, 7], 'G2': [2, 7], 'G1': [1, 6, 7]}
>>> {tide: [value ** 2 for value in tides[tide]] for tide in tides}
{'G3': [9, 64, 81, 49], 'G2': [4, 49], 'G1': [1, 36, 49]}

或者您可以使用 dict.iteritems像这样

>>> {tide: [value ** 2 for value in values] for tide, values in tides.iteritems()}
{'G3': [9, 64, 81, 49], 'G2': [4, 49], 'G1': [1, 36, 49]}

注意:在上面显示的两个示例中,我都避免使用 dict.values,因为这会创建一个包含字典中所有值的临时列表.我们不希望这样。

在第一个示例中,我们遍历字典中的键并获取与键对应的值并将其中的每个值平方。

在第二个例子中,我们一次从字典中取出一对键和值。因此,我们不创建临时列表。

上面显示的 {...} 中的代码称为 dictionary comprehension在其中,[...] 中的任何内容都称为 list comprehension .

关于python - 我怎样才能对字典中的数字列表进行平方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28999448/

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