2017-09-22 68 views
0

我仍然在學習編程和Python的開始階段,但我與如何最好地使用字典,或者如果我甚至應該掙扎。目前,我想有如下格式的「表」這樣的:業餘小時:Python的字典構建

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

爲了什麼,我試圖做的目的,我想可以稱之爲「USER = 1 ''attr'列(或有時'loc')返回爲['red','green']之類的列表。

我的問題是這樣的:如果我感興趣的數據是多列,是把它當作一個數據幀的唯一方法來檢索信息關閉一個給定的行(或最好?)?似乎字典將被限制在只有兩列的鍵/值對中。

非常感謝。

+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