2012-01-17 106 views
0

希望快速蟒蛇這裏的問題...「for循環」中詞典巨蟒-3詞典從的.plist(或XML)

import plistlib 

pl = plistlib.readPlist('/Users/name/Documents/some.plist') 

print(pl[0]['keyA'] , pl[0]['keyD'] , pl[0]['keyG']) 

我將如何寫一個for循環或列表功能會通過循環一個將值打印到某些鍵的字典。

主字典將具有比如30個條目(在詞典字典)與每一個具有在約40鍵)

例:

print(pl[0]['keyA'] , pl[0]['keyD'] , pl[0]['keyG']) 
print(pl[1]['keyA'] , pl[1]['keyD'] , pl[1]['keyG']) 
print(pl[2]['keyA'] , pl[2]['keyD'] , pl[2]['keyG']) 
print(pl[n]['keyA'] , pl[n]['keyD'] , pl[n]['keyG']) 

其中pl是主字典,然後0 - n請參閱字典中的字典。

我希望這是有道理的

回答

1

只是寫它! :P

for sub_dict in pl.values(): 
    print sub_dict['keyA'], sub_dict['keyD'], sub_dict['keyG'] 

.values()說來遍歷字典的值,因爲通常在字典迭代通過其鍵變爲在Python 2使用.itervalues()代替。)

+0

'文件 「plistread.py」,第6行 打印sub_dict [ '噪聲'],sub_dict [ 'SSID_STR'],sub_dict [ 'BSSID'] ^ 語法錯誤:無效syntax' – beoliver 2012-01-17 08:05:05

+0

'回溯(最近最後一次通話): 文件 「plistread.py」,5號線,在 爲sub_dict在pl.values(): AttributeError的: '名單' 對象有沒有屬性 '值' ' – beoliver 2012-01-17 08:05:59

+1

如果說'名單'對象有沒有屬性「值」,那麼「list」對象沒有「值」屬性!問題是外部數據結構是一個列表而不是字典。要迭代列表,你可以在pl:中寫'for sub_dict。 – katrielalex 2012-01-17 11:34:43

0

你的問題無關與plist有關,它與嵌套字典。

從你寫的好像是你的pl字典是這樣的:

pl = {0: {'keyA': 1, 'keyD': 2, 'keyG': 3}, 
     1: {'keyA': 11, 'keyD': 12, 'keyG': 13}} 

在這種情況下,簡單地使用:

keys = ['keyA', 'keyD', 'keyG'] 
for i in range(len(pl)): 
    print(' '.join(str(pl[i][key]) for key in keys) 

這將工作,如果所有pl鍵數,否則你可能想用.items().values(),看看official dict documentation