我运行了你给我的代码,编译器返回Traceback (most recent call last): File "C:\Users\lixiaohua\PycharmProjects\pythonProject\001.py", line 172, in <module> print(inner_length(x), sum(len(num) for num in pp(x))) File "C:\Users\lixiaohua\PycharmProjects\pythonProject\001.py", line 165, in inner_length v.num = str(v.num) AttributeError: 'dict' object has no attribute 'num',该怎么改进呢?
时间: 2023-09-11 08:05:55 浏览: 70
Mac下anaconda中Spyder打开报错Traceback(most recent call last)…问题
5星 · 资源好评率100%
这个错误提示说明你的结构体数组实际上是一个字典数组,而不是一个对象数组,因此不能直接使用 `v.num` 来获取数值属性。需要修改代码来获取数值属性。
以下是修改后的代码:
```python
def inner_length(x_arr):
total_len = 0
for v in x_arr:
num_str = str(v['num']) # 获取 num 属性的字符串形式
total_len += len(num_str) # 计算字符串长度
return total_len
x = [{'num': 22.203}, {'num': 72.44}]
pp = lambda x_arr: [str(v['num']) for v in x_arr]
print(inner_length(x), sum(len(num) for num in pp(x)))
```
这个程序应该可以正常运行并输出正确的结果。
阅读全文