這是我的輸入資料。
data = {323: [[639, 646]], 325: [[1491, 1507]], 332: [[639, 647], [823, 833], [1274, 1298]], 334: [[640, 646]], 335: [[822, 834]]}
我想洗掉值小于或等于 10 的子串列。
我的輸出看起來像這樣。
output_data = {323: [], 325:[[1491,1507]], 332:[[1274,1298]], 334:[], 335:[[822,834]]}
我怎樣才能達到預期的輸出?
uj5u.com熱心網友回復:
您可以撰寫一個串列推導式,為字典中的每個鍵重新構建串列串列,條件是內部項的差異大于 10:
for key, values in data.items():
data[key] = [[low, high] for low, high in values if high - low > 10]
uj5u.com熱心網友回復:
我剛剛做了一個快速測驗,看起來可以使用dict理解和filterbuitin 函式來做到這一點:
result = {k: list(filter(lambda v: v[1] - v[0] > 10, val_list))
for k, val_list in data.items()}
print(result)
輸出:
{323: [], 325: [[1491, 1507]], 332: [[1274, 1298]], 334: [], 335: [[822, 834]]}
假設:子串列首先按最低元素排序,然后是高元素。如果沒有,你需要用一個abs呼叫來包裝它,就像abs(v[1] - v[0])是安全的,以防v[0]是更高的元素。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/330974.html
上一篇:Python中的跳轉列印
