自從我開始學習python以來,這種情況並不長,但我真的很想深入其中。並努力挖掘它。所以這裏是我已經研究了一段時間但尚未破解的任務:
我給出了嵌套字典和列表的混合組合(我們稱之爲「組合」),並且我需要實現函數,它允許訪問嵌套元素作爲對象屬性,也可以以某種方式將組合元素視爲可迭代的。這應該是這個樣子:將嵌套字典複雜轉換爲python中的對象
combination = {
'item1': 3.14,
'item2': 42,
'items': [
'text text text',
{
'field1': 'a',
'field2': 'b',
},
{
'field1': 'c',
'field2': 'd',
},
]
}
def function(combination):
...
使
list(function(combination).items.field1)
會給:['a', 'c']
和
list(function(combination).item1)
會給:[3.14]
。
編輯正如@FM提到的,我錯過了處理非字典元素的描述: list(function(combination).items[0])
>>>['text text text']
我試圖實現一個類(榮譽給Marc)幫我:
class Struct:
def __init__(self, **entries):
self.__dict__.update(entries)
然後在功能使用它像return Struct(**combination)
雖然是版本呃漂亮,它只是達到預期結果的第一步。
但隨着下一步需要更深入,它壓倒了我,我無法自己做到。
因此,我懇請您的幫助。
Michael。
+1一個有趣的問題。但是你希望直接從'item'這樣的鍵跳到'field1'這樣的鍵,似乎處於一種緊張的狀態,保留了所有信息。後者是你的重要目標嗎?更具體地說,你如何設想訪問存儲在'items'(''text text text'')下的非dict元素? – FMc 2011-03-13 18:42:40
@FM _combination_不是基於特定的真實信息方案,所以任何邏輯不一致都不意味着很多(如果我正確理解了你的話)。訪問非dict元素是重要的一點。我認爲'result.items'應該支持切片等。我會編輯問題。 – 2011-03-13 19:04:47