如何制作一個簡單的文本決議器來查找關鍵字并相應地對它們進行分類。
例子:我有兩本字典
A = {'1': 'USA', '2': 'Canada', '3': 'Germany'}
B = {'t1': "The temp in USA is x", 't2': 'Germany is very cold now', 't3': 'Weather in Canada is good', 't4': 'USA is cold right now'}
現在我想找出關鍵字 fromA是否存在,B結果應該是這樣的。
Result = {'1': ('t1', 't4'), '2' : 't3', '3': 't2'}
我是初學者,得到這個的邏輯非常混亂。
uj5u.com熱心網友回復:
你可以用字典理解來做到這一點:
A = {'1': 'USA', '2': 'Canada', '3': 'Germany'}
B = {'t1': "The temp in USA is x", 't2': 'Germany is very cold now', 't3': 'Weather in Canada is good', 't4': 'USA is cold right now'}
{k: [k_b for k_b, v_b in B.items() if v in v_b.split()] for k, v in A.items()}
# {'1': ['t1', 't4'], '2': ['t3'], '3': ['t2']}
這使得字典中的每個值都是一個串列,而不是一些是集合和其他字串。這幾乎肯定會比混合型別字典更容易使用。
如果您的字典會很大,您可能會通過反轉B字典來提高一些性能,這樣您就不需要每次都掃描每個值。
uj5u.com熱心網友回復:
如果您想要顯示的確切格式,您可以執行以下操作。一個簡單的回圈,生成元組的 dict,然后使用 dict comprehension 重新格式化長度為 1 的那些。
Result = dict()
for ka, va in A.items():
Result[ka] = tuple(kb for kb,vb in B.items() if va in vb)
Result = {k: (v[0] if len(v) == 1 else v) for k,v in Result.items()}
print(Result)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/398866.html
上一篇:由于{useNewUrlParser:boolean,useUnifiedTopology:boolean}連接到mongodb的錯誤不可分配給“Callback<MongoClient>
