我們如何根據字典鍵對字典進行排序并將它們放在一致的間隔下?
例如,我們在python中有以下字典
{0: 1, 10: 3, 12: 2, 19: 4, 35: 5}
所以在上面的例子中,我們有從 開始的鍵0 - 35,我們想把它們放在 10 的間隔中,這意味著以下內容:
interval 0-10 has values 1
interval 10-20 has values [3, 2, 4]
interval 20-30 has no values
interval 30-40 has values [5]
最終輸出應該類似于:
{0: [1], 10: [3, 2, 4], 20: [0/null], 30: [5]
這樣做的任何pythonic方式?
uj5u.com熱心網友回復:
使用collections.defaultdict:
from collections import defaultdict
data = {0: 1, 10: 3, 12: 2, 19: 4, 35: 5}
output = defaultdict(list)
for k, v in data.items():
output[k // 10 * 10].append(v)
>>> dict(out)
{0: [1], 10: [3, 2, 4], 30: [5]}
編輯
如果您必須在生成的 dict 中包含所有鍵,則將默認 dict 替換為自行構建鍵的 dict:
out = {k: [] for k in (range(0, (max(data)//10*10) 1, 10))}
for k, v in data.items():
out[k // 10 * 10].append(v)
uj5u.com熱心網友回復:
要添加缺失值,可以使用 last 存盤一個變數并檢查它們之間的差距是否大于 10:
a = {0: 1, 10: 3, 12: 2, 19: 4, 35: 5}
out = {}
last = 0
for i in a:
b = int(i/10) * 10
if (b - last) > 10:
out[b-10] = [] # whatever you want it to be
if b in out:
out[b].append(a[i])
else:
out[b] = [a[i]]
last = b
輸出:
{0: [1], 10: [3, 2, 4], 20: [], 30: [5]}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/358202.html
上一篇:如何在熊貓中使用字典過濾資料框?
