我有一個字典串列,它有不同的鍵和值組合。
list_ = [{'r':'640x360','b':500},{'r':'1280x720','b':3000}, {'r':'1920x1080','b':4000},{'r':'1920x1080','b':5000}, {'r':'1280x720','b':3100}, {'b':'1280x720','t':3300}]
我希望首先對該字典進行排序,然后根據 'b' 的值對其進行修改。假設解析度值“r”為“1280x720”,并且在不同字典中的“b”中具有不同的位元率。
讓我們以“1280x720”的情況為例。對于“1280x720”,我希望最小位元率為 2000。如果值“b”小于 2000,則必須將 2000 作為“b”。
如果兩個字典的解析度相同并且位元率“b”有 -300 的差異,那么它必須保持具有更高值的字典并彈出另一個字典。
如果值 'b' 大于最小值,我們也必須保留該字典。
輸入中的“1280x720”條目
[{'r':'1280x720','b':3000},{'r':'1280x720','b':3100}, {'b':'1280x720','t':3300},{'r':'1280x720','b':1300}, {'r':'1280x720','b':2500}]
我期待的輸出中的“1280x720”條目。
[{'r':'1280x720','b':2000},{'r':'1280x720','b':2500},{'r':'1280x720','b':3300}]
我嘗試使用下面的代碼對它們進行排序,但無法繼續其余部分。
new_rep = [dict(t) for t in set(tuple(d.items()) for d in list_)]
我得到了排序的字典串列。
任何幫助,將不勝感激。
uj5u.com熱心網友回復:
這看起來可行:
data = [{'r':'1280x720','b':3000},{'r':'1280x720','b':3100}, {'r':'1280x720','b':3300},{'r':'1280x720','b':1300}]
sorted_data = sorted(data, key=lambda d: -d['b'])
print(sorted_data)
result = []
for item in sorted_data:
if item['b'] < 2000:
item['b'] = 2000
new_res = True
for res_item in result:
if (res_item['b'] > item['b'] and res_item['b'] - item['b'] <= 300) or (res_item['b'] < item['b'] and item['b'] - res_item['b'] <= 300):
new_res = False
if new_res:
result.append(item)
result = sorted(result, key=lambda d: d['b'])
print(result)
輸出 :
[{'r': '1280x720', 'b': 2000}, {'r': '1280x720', 'b': 2500}, {'r': '1280x720', 'b': 3300}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/444684.html
