我有一本字典,其中key: str和value: list。當鍵等于某個值并且該串列中的一個元素等于某個值時,我想從其值串列中洗掉某個串列。
例如,當d["A"]=[[0, "APPLE", 1202021, "NEW"], [8, "PEAR", 3242413, "NEW"], [1982, "PEAR", 1299021, "OLD"]]",我想d["A"]從其第二個索引值等于的位置洗掉串列,3242413以便鍵 A 處的新字典變為:d["A"]=[[0, "APPLE", 1202021, "NEW"], [1982, "PEAR", 1299021, "OLD"]]"。
到目前為止,我嘗試使用filter()和dict comprehension,但無法想出一種干凈的方法來做到這一點。當然總有一種方法可以回圈和洗掉,但我想知道我們是否可以使用 filter() 來實作同樣的事情?就像是 :
# d is the dictionary key: str value: list of lists
d["A"] = [[0, "APPLE", 1202021, "NEW"], [8, "PEAR", 3242413, "NEW"], [1982, "PEAR", 1299021, "OLD"]]
# 1. use filter
new_dict = dict(filter(lambda elem: elem[1].. != ,d.items())) # filter out those element inside list value does not equal to 3242413
# 2. use dict comprehension
new_dict = {key: value for (key, value) in d.items() if value ... == }
# so the new dict becomes
d["A"]=[[0, "APPLE", 1202021, "NEW"], [1982, "PEAR", 1299021, "OLD"]]
uj5u.com熱心網友回復:
您幾乎可以理解字典:
d = {}
d["A"] = [[0, "APPLE", 1202021, "NEW"], [8, "PEAR", 3242413, "NEW"], [1982, "PEAR", 1299021, "OLD"]]
d["B"] = [[0, "APPLE", 1202021, "NEW"], [8, "PEAR", 1, "NEW"], [1982, "PEAR", 3242413, "OLD"]]
d = {k: [i for i in v if i[2] != 3242413] for (k, v) in d.items()}
給出:
{'A': [[0, 'APPLE', 1202021, 'NEW'], [1982, 'PEAR', 1299021, 'OLD']], 'B': [[0, 'APPLE', 1202021, 'NEW'], [8, 'PEAR', 1, 'NEW']]}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/352450.html
