簡體   English   中英

在字典聲明中使用OrderedDict

[英]Using an OrderedDict within a dictionary declaration

我有以下相當復雜的數據結構:

temp_dict = {
    'a': {
        'aardvark': (6,True),
        'apple': (3,True)
    },
    'b':{
        'banana': (2,False),
        'bobble': (8,True)
    }
}
print(temp_dict['a'])

這是一本字典(temp_dict),其中包含另一個字典層(a,b),其中另一個字典層(aardvark,apple)包含元組。

但這會輸出: {'apple': (3, True), 'aardvark': (6, True)}

不在乎a,b的順序 但是我需要將aardvark, apple層設置為orderedDict-他們必須記住插入的順序(永遠不會排序)。 所以我嘗試了:

temp_dict = {
    'a': OrderedDict{
        'aardvark': (6,True),
        'apple': (3,True)
    },
    'b':OrderedDict{
        'banana': (2,False),
        'bobble': (8,True)
    }
}

但這只是給我無效的語法。 我該怎么做呢? 我發現的所有示例都未在另一個數據結構中顯示OrderedDict的聲明。

謝謝

嘗試:

temp_dict = {
    'a': OrderedDict([
        ('aardvark', (6,True)),
        ('apple', (3,True)),
    ]),
    'b':OrderedDict([
        ('banana', (2,False)),
        ('bobble', (8,True)),
    ]),
}

做這個:

temp_dict = {
    'a': OrderedDict((
        ('aardvark', (6,True)),
        ('apple', (3,True))
    )),
    'b':OrderedDict((
        ('banana', (2,False)),
        ('bobble', (8,True))
    ))
}

(但也可以考慮切換到使用類。我發現具有超過一層嵌套的字典通常是解決問題的錯誤方法。)

使用字典初始化OrderedDict可以確保在初始化保持插入順序。

>>> d = OrderedDict({1: 2, 3: 4})
>>> d[5] = 6

d現在必須是OrderedDict([(1, 2), (3, 4), (5, 6)])OrderedDict([(3, 4), (1, 2), (5, 6)])

另一方面:

>>> d = OrderedDict([(1, 2), (3, 4)])
>>> d[5] = 6

d現在只能是OrderedDict([(1, 2), (3, 4), (5, 6)])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM