循环遍历OrderedDict对象错误

问题描述 投票:1回答:1

我正在尝试学习如何操作python2.7 OrderedDict对象。我有一个在程序前面提供的OrderedDict。我试图理解它的结构,同时理解如何操纵这个对象并从字典中提取各种元素和元素值。

在下面的代码中,我演示了初始有序字典对象finaldata有一个键['models']。我使用该键从finaldata创建一个新的有序字典fdata_models。然后使用fdata_models中的一个键等新的有序字典。

您可以在下面看到我的测试程序及其实验的输出。

我有几个问题,但最紧迫的是为什么我不能遍历fdata_models中的字典对象?

在那个问题之后,我尝试了语法“fdata_model = fdata_models [0]”,而不是硬编码密钥,['models'],但这也会引发错误。有没有办法在不知道其实际键值的情况下在fdata_models中索引,比如第3次出现?

....
fdata_models = OrderedDict()
fdata_model = OrderedDict()
fdata = OrderedDict()
print("finaldata Keys are ", finaldata.keys())
fdata_key = finaldata.keys()
print("finaldata Key is ", fdata_key)
fdata_models = finaldata['models']
print("Number of ", fdata_key, " are ", len(fdata_models))
print("['Models'] Keys are ", fdata_models.keys())    
fdata_model = fdata_models['1']
print("Number of models['1'] are ", len(fdata_model))
print(" models['1'] keys are ",fdata_model.keys())
fdata_model = fdata_models['64110']
print("Number of models['64110'] are ", len(fdata_model))
print(" models['64110'] keys are ",fdata_model.keys())
for fdata in fdata_models:
    print("fdata['model']", " keys are ", fdata[0].keys())

('finaldata Keys are',['models'])('finaldata Key is',['models'])

('数量',['模型'],'是',4)

(“['Models']键是”,['123','110','111','112'])

(“模型数量['123']是”,7)

(“models ['123']键是”,''model','Mn','Md','Opt','Vr','SN','DA'])(“模型数量['110 ']是“,47”(“模型['64110']键是”,['model','MajorFWRev','MidFWRev','MinorFWRev',...... 'TimeZone','Date_year','Date_month','Date_Day','Time_hour','Time_minute','Time_second',...])Traceback(最近一次调用最后一次):文件/pgms/json.py“,第204行,打印(“fdata ['model']”,“keys are”,fdata [0] .keys())AttributeError:'str'对象没有属性'keys'

谢谢... RDK

python-2.7 ordereddictionary
1个回答
1
投票

在这方面,OrderedDicts就像dicts一样工作。当你迭代它们时,你得到了密钥。

for fdata in fdata_models:
    print("fdata['model']", " keys are ", fdata_models[fdata].keys())

(另请注意,所有三个... = OrderedDict()线实际上并没有做任何有用的事情,因为在使用它们之前再次重新绑定fdata_modelsfdata_modelfdata。)

© www.soinside.com 2019 - 2024. All rights reserved.