我有以下翻譯詞典:
{0: {'a', 'b', 'c'},
1: {'a', 'b', 'c', 'd'},
2: {'k', 'b', 'e', 'a', 'n'}}
我想將它“反轉”為鍵的屬性(這里的鍵是一種 id 形式)。給定一組屬性,給我相關的 id(鍵)。
例如,給定{'a', 'b', 'c'}return 0。
這樣做的最佳做法是什么?屬性可以以不同的順序出現,這就是我使用集合的原因。我應該將它插入到資料框(翻譯表)中嗎?或者還有其他解決方案?
uj5u.com熱心網友回復:
不知道為什么要使用熊貓。這是一個純python解決方案。
您可以反轉字典以使用 afrozenset作為鍵:
d = {0: {'a', 'b', 'c'},
1: {'a', 'b', 'c', 'd'},
2: {'k', 'b', 'e', 'a', 'n'}}
rev_d = {frozenset(k): v for v,k in d.items()}
rev_d[frozenset({'a', 'c', 'b'})]
# 0
uj5u.com熱心網友回復:
您可以使用 aSeries來實作這一點pandas:
import pandas as pd
x = {0: {'a', 'b', 'c'},
1: {'a', 'b', 'c', 'd'},
2: {'k', 'b', 'e', 'a', 'n'}}
lookup = pd.Series(x)
print(lookup[lookup.values == {'a', 'b', 'c'}])
# 0 {c, b, a}
# dtype: object
uj5u.com熱心網友回復:
您可以遍歷整個字典并查找匹配項,如下所示:
def att_to_key(d: dict, attributes: dict) -> int:
for k,v in d.items():
if v == attributes:
return k
如果您然后執行以下操作,d 是您的原始字典,而 attributes 是您要查找的屬性字典
f = att_to_key(d, {"a","b","c"})
print(f)
它輸出你的 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/404556.html
標籤:
上一篇:讀取json鍵值但忽略物件
