我試圖根據鍵的 3 個首字母找到鍵的值。我有三個不同類別的科目,我必須從中獲得成績,存盤為價值,科目是關鍵。我有 ECO、GEO 和 INF。由于有多個主題,我想從包含 ECO、GEO 或 INF 的每個鍵中獲取值。
subject={"INFO100":"A"}
(subject.get("INF"))
在這種方法中我沒有得到值,我必須使用整個密鑰。有作業嗎?我想要單獨的值,所以我可以根據他們的研究領域計算他們的 GPA :)
uj5u.com熱心網友回復:
您需要對對進行迭代,以過濾鍵并保留值
subject = {"INFO100": "A", "INF0200": "B", "ECO1": "C"}
grades_inf = [v for k, v in subject.items() if k.startswith("INF")]
print(grades_inf) # ['A', 'B']
grades_eco = [v for k, v in subject.items() if k.startswith("ECO")]
print(grades_eco) # ['C']
uj5u.com熱心網友回復:
為了理解海豚,您可以創建一個回傳字典的函式,例如:
def getGradesBySubject(dict, search_subject):
return [grade for subject,grade in dict.iteritems() if subject.startwith(search_subject)]
uj5u.com熱心網友回復:
A在評論中說,字典的目的是擁有唯一的鍵。索引非常快,因為它使用哈希表。通過搜索您需要回圈的部分鍵,并失去散列的好處。
為什么不將資料存盤在嵌套字典中?
subject={'INF': {"INFO100":"A", "INFO200":"B"},
'OTH': {"OTHER100":"C", "OTHER200":"D"},
}
然后訪問:
# all subitems
subject['INF']
# given item
subject['INF']['INFO100']
uj5u.com熱心網友回復:
我建議使用dict包含三個字母主題(如 ECO、GEO)到所有主題值的映射的主物件。例如:
subject = {"INFO100": "A",
"INFO200": "B",
"GEO100": "D",
"ECO101": "B",
"GEO003": "C",
"INFO101": "C"}
master_dict = {}
for k, v in subject.items():
master_dict.setdefault(k[:3], []).append(v)
print(master_dict)
# now you can access it like: master_dict['INF']
輸出:
{'INF': ['A', 'B', 'C'], 'GEO': ['D', 'C'], 'ECO': ['B']}
如果你想消除一個科目的重復成績,或者只是作為一種替代方法,我還建議defaultdict:
from collections import defaultdict
subject = {"INFO100": "A",
"INFO300": "A",
"INFO200": "B",
"GEO100": "D",
"ECO101": "B",
"GEO003": "C",
"GEO102": "D",
"INFO101": "C"}
master_dict = defaultdict(set)
for k, v in subject.items():
master_dict[k[:3]].add(v)
print(master_dict)
defaultdict(<class 'set'>, {'INF': {'B', 'A', 'C'}, 'GEO': {'D', 'C'}, 'ECO': {'B'}})
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/347771.html
下一篇:從嵌套字典中獲取非等于值
