2017-09-22 8 views
0

私はまだプログラミングとPythonの学習の初期段階にありますが、私は辞書をうまく使うにはどうしたらいいか、もし必要ならば苦労しています。現在、私は、このようなことの形式で「表」を持っているしたい:私は何をしようとしているの目的のためにアマチュアアワー:Python辞書構造化

user attr   loc 
    ---- ----   ---- 
    1  red,green here 
    2  blue   there 
    3  yellow  here, there 
    ... ...   ... 
    n  black  nowhere 

、私は「= 1のユーザーを呼び出すことができるようにしたいのですが'と' attr '列(または時には' loc ')が[' red '、' green ']のようなリストとして返されます。

質問:私が興味を持っているデータが複数の列である場合、それをデータフレームとして扱い、与えられた行から情報を取り出す唯一の(または最良の)方法ですか?辞書はキー/値の組み合わせで2列に制限されているようです。

ありがとうございました。

+1

ます。また、オブジェクトを作成することを検討することができ、それは彼らがしているものです。 –

答えて

0

ユーザーIDは数値です。この場合、(attr, loc)のようなタプルのリストです。あなたがユーザー名で物事を保管していたなら、辞書が適切かもしれません。

2

辞書要素の内容は何でもかまいません。だから、複数のものを入れたいなら別の辞書を埋め込む。

''' 
    user attr   loc 
    ---- ----   ---- 
    1  red,green here 
    2  blue   there 
    3  yellow  here, there 
    ... ...   ... 
    n  black  nowhere 
''' 

d = { 
    1: {'attr':('red','green'), 'loc':'here'}, 
    2: {'attr':('blue'), 'loc':'there'}, 

    } 

if __name__ == '__main__': 
    print d 
    print d[1]['loc'] 
    pass 

出力:

{1: {'loc': 'here', 'attr': ('red', 'green')}, 2: {'loc': 'there', 'attr': 'blue'}} 
here 
0

私が正しくあなたの質問を理解していれば、あなたはネストされた辞書を実装することができます。

user[1]['attr'] 
>>>['red','green'] 
user[1]['loc'] 
>>>'here' 
1

私は、このような形式の "表" を持っているしたいのですが...

は、私は、パンダを提案することができる:私は名前の

import pandas as pd 
d = { 
    1: {'attr':('red','green'), '_loc':'here'}, 
    2: {'attr':('blue'), '_loc':'there'}, 
    } 

df = pd.DataFrame.from_dict(d, orient='index') 
df.index.name = 'user' 
print(df) 
       attr _loc 
user      
1  (red, green) here 
2    blue there 

注意.locプロパティとの混同を避けるために列_locを使用してください。あなたの目的のために

これは主に、あなたにも簡単に、私が主張するだろうクエリがより柔軟できれいに見えるデータ構造を取得します。

print(df.loc[1, 'attr']) # user 1 attrs 
('red', 'green') 

print(df.loc[1, '_loc']) # user 1 attrs 
here 

print(df.loc[1]) # user 1 all records 
attr (red, green) 
_loc   here 
Name: 1, dtype: object