我是Python新手。 我有2个Dict和1个List,将按照重演方法进行处理。
system_list= ['cassandra', 'flume', 'hbase', 'hdfs', 'mapreduce', 'zookeeper']
allaspects= {'flume': [19.0, 13, 46, 5, 100, 0, 6, 6, 0],
'hdfs': [161.0, 221.0, 232.5, 8.0, 60.0, 7.5, 16, 70, 10],
'zookeeper': [40.0, 66, 67, 13, 36, 1.5, 2, 19.5, 6],
'mapreduce': [161, 23, 11, 79, 41, 6.5, 8.5, 101.5, 8],
'hbase': [270.75, 573, 264, 197, 426, 7.0, 12.5, 91, 4],
'cassandra': [404, 453, 287, 17, 307, 1.0, 10, 31, 26]}
allaspects_big= {'flume': [18.0, 119.0, 43.0, 3.5, 81.0, 0, 6.0, 4.5, 0],
'hdfs': [152.5, 214.0, 221.5, 7.0, 56.0, 6.0, 14, 68, 10],
'zookeeper': [33, 55, 56, 13, 28, 1.0, 1, 16.0, 3.5],
'mapreduce': [152, 219, 106, 71, 34, 6.5, 7.5, 91.0, 7.0],
'hbase': [227, 505, 233, 170, 320, 6.0, 12.5, 84, 4],
'cassandra': [195, 271, 177, 10.5, 156, 1.0, 6, 16, 20]}
def recapitulation(system_list, total):
count = {}
msg =""
# print total
for system in system_list:
count[system] = 0
for data in total[system]:
count[system] = count[system] + data
msg= msg+""+system+"("+str(int(count[system]))+")"
if(system == 'zookeeper'):
msg= msg+"."
else:
msg= msg+", "
return msg
我将所有脚本放在同一个文件中。 如果我只运行一个dict(在我的情况下只执行a3或仅执行a3b),则该方法为我们提供字符串输出。但是当我一起运行a3和a3b(见下文)时。我得到错误'str'没有属性。
a3 = recapitulation(system_list ,allaspects)
a3b = recapitulation(system_list, allaspects_big)
错误:
a3b = recapitulation(system_list, allaspects_big)
AttributeError: 'str' object has no attribute 'allaspects_big'
完整追溯:
Traceback (most recent call last): File "py/parse-all.py", line 2537, in <module> a3b = recapitulation(system_list, a3.allaspects_big) AttributeError: 'str' object has no attribute 'allaspects_big'
我无意解决这个问题。请给我一些建议。我的脚本出了什么问题。谢谢!
答案 0 :(得分:2)
您的代码与回溯不一致。你说你正在跑步:
a3b = recapitulation(system_list, allaspects_big)
但追溯清楚地显示:
a3b = recapitulation(system_list, a3.allaspects_big)
# ^ what?!
a3
是一个字符串,由recapitulation
返回。因此不具有allaspects_big
属性。我想您只想通过allaspects_big
,因此请移除a3.
以使您实际遇到的内容符合您的声明。