我正在處理的屬性有時列出其元素可以是字典或進一步嵌套的對象與屬性等我想要執行一些切片,我對Python的掌握只能用什麼感覺深深地解開Pythonic。pythonic切片的嵌套屬性
我最小的代碼如下所示:
class X(object):
def __init__(self):
self.a = []
x=X()
x.a.append({'key1':'v1'})
x.a.append({'key1':'v2'})
x.a.append({'key1':'v3'})
# this works as desired
x.a[0]['key1'] # 'v1'
我想執行的嵌套詞典一鍵訪問,但作出這樣的呼籲包含字典列表中的所有元素。這樣做的標準的Python的方式將是一個列表理解一拉:
[v['key1'] for v in x.a]
然而,我的小例子,並不完全傳達我的真實世界場景中嵌套的全部範圍:類屬性列表a
X
可能包含對象,其屬性是對象,其屬性是字典,其鍵在迭代外部列表時要選擇它們的鍵。
# I would like something like
useful_list = x.a[:]['key1'] # TypeError: list indices must be integers, not str
# or even better
cool_list = where(x.a[:]['key1'] == 'v2') # same TypeError
如果我開始列表理解每個有趣的關鍵,它很快就不會看到所有的Pythonic。有沒有這樣做的好方法,或者我必須爲所有可能的列表和字典鍵配對編寫'getter'方法?
更新: 我一直在閱讀有關重載列表。顯然,可以混淆getitem方法,該方法用於dict的列表和鍵的索引。也許是一個遍歷列表成員的自定義類。這是開始設計的...
完全按照需要工作。謝謝。它也有一個更安全的感覺,因爲使顯式更改(通過一種新方法訪問,而不是重新定義x ['key1']的作用)。尼斯 – DrSAR 2013-03-10 10:05:21
很高興我能幫到你! – shx2 2013-03-10 10:25:01