我想將字典轉換為 JSON 物件,但我的鍵是一個元組,因此我在這樣做時遇到了問題:
import json
d = {(300, 341): 4, (342, 426): 5}
json.dumps(d)
錯誤:
型別錯誤:鍵必須是 str、int、float、bool 或 None,而不是元組
如果轉換為 JSON,我該如何解決這個問題并訪問關鍵元素?
uj5u.com熱心網友回復:
正如錯誤所述,元組不能是 JSON 物件的鍵,您需要某種解決方法。考慮將元組序列化為字串,但在這種情況下將它們轉換回元組可能有點棘手。
d = {str((300, 341)): 4, str((342, 426)): 5}
json.dumps(d)
另一種選擇是將您存盤資料的方式更改為這樣的方式
d = [
{'key1': 300, 'key2': 341, 'value': 4},
{'key1': 342, 'key2': 426, 'value': 5}
]
顯然,您可以將“key1”和“key2”更改為更有意義的內容。
編輯:正如您所提到的,您正在使用范圍。這個解決方案怎么樣?
def jsonify_data(d):
jsonifable = {'%d:%d' % key: val for key, val in d.items()}
json.dumps(jsonifable)
def dejsonify_data(jd):
d = {}
for key, val in jd.items():
start, end = key.split(':')
d[int(start), int(end)] = val
return d
uj5u.com熱心網友回復:
您不能直接將元組轉換為 JSON,您必須這樣做:
dict = {
300: 4,
341: 4,
342: 5,
426: 5
}
json.dumps(dict)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/334127.html
上一篇:將嵌套字典拆分為多個字典
