Day46-Python中字典的一鍵多值小知識點

"""
在字典中將鍵映射到多個值上
"""
d = {
    'a': [1, 2, 3],
    'b': [4, 5]
}
# 使用列表來映射可以保留元素插入的順序

e = {
    'a': {1, 2, 3},
    'b': {4, 5}
}
# 使用集合來影射可以去重且不在意順序

就像我們在其他應用場景比如Django下就常常看到一鍵多值:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'day51',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': 'localhost',
        'PORT': '3306'
    }
}


那麼當我們想創建一鍵多值的字典,同時當對字典做迭代或序列化操作時,也能控制其中元素的順序怎麼辦?自帶的collections模塊中OrderedDick就有用處了,顧名思義:

from collections import OrderedDict
import json


d = OrderedDict()
d['foo'] = 1
d['bar'] = 2
d['spam'] = 3
d['grok'] = 4

for key in d:
    print(key, d[key])

print(json.dumps(d))

OrderedDick帶來的好處是根據元素加入的順序來排列鍵的位置,但其大小是普通字典的2倍多。如果數據結構相當龐大,就不太合適了。

輸出結果:

foo 1
bar 2
spam 3
grok 4

{"foo": 1, "bar": 2, "spam": 3, "grok": 4}

可見Python的內置和三方模塊真是應有盡有包羅萬象呢。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章