2012-01-17 2 views
0

...は、ここでうまくいけば、迅速なPythonの質問

import plistlib 

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

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

は、どのように私はループまたはサイクルだろうリスト機能を通じてのために書くでしょう値を特定のキーに印刷する辞書。

メイン辞書は、それぞれが以内に約40のキーを有すると言う30個のエントリ(辞書に辞書)を有するであろう)

例:

plはメイン辞書であり、次いで 0 - n
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']) 

辞書内の辞書を参照してください。

私はこれが意味があるといいですか?

答えて

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 [ 'NOISE']、sub_dict [ 'SSID_STR']、sub_dict [ 'BSSID'] ^ にSyntaxError:最後の無効はsyntax – beoliver

+0

'トレースバック(最新の呼び出しを):pl.valuesでsub_dictため で ファイル "plistread.py"、5行目、(): はAttributeError:それは ' 'リスト' オブジェクトが持っていると言うならば 'リスト' オブジェクトが属性 '値' ' – beoliver

+1

を持っていません属性 '値'がない場合、 '' list''オブジェクトには ''values''属性はありません!問題は、外側のデータ構造が辞書ではないリストであることです。リストを反復するには 'for sub_dict for pl:'と書くだけです。 – katrielalex

0

あなたしている問題は何もしていますplistと同じように、それはネストされた辞書を持っています。あなたがそれを書いたものから

は、あなたのpl dictのが見えるようだ:その場合は

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

をご覧ください。
関連する問題