2016-12-14 82 views
0

我有一個包含多個不同鍵和值的條目的詞典。Python - 從多個令牌鍵和值創建鍵值對

一些由空格分隔的多令牌字符串,一些不帶空格的單個令牌字符串。

一些排隊確切地說,與一個令牌密鑰,值與一個記號:

"'Apl'": "'Apple'", 

一些具有單個令牌密鑰和多個標記值:

"'Blpepr'": "'Bell Pepper'", 

一些有多個令牌密鑰和單令牌值:

"'Grn Bn'": "'Greenbean'", 

還有一些具有多個令牌密鑰和多個令牌密鑰標記值(不總是兩面相同數量的!):

"'Swt Ptto'": "'Sweet Potato'", 

我試圖創建一個指定鍵的字典:其對應邊的密切值對作爲可能的,這樣至少我可以得到:

"'Apl'": "'Apple'", 
"'Swt'": "'Sweet'", 
"'Ptto'": "'Potato'", 

我已經考慮了鍵和值與不匹配是註定要失敗的令牌數量,因爲它不是容易實現,以確定一個令牌開始,沒有空格結束。但至少在空間分隔的情況下,我們知道令牌的開始和結束位置,所以我希望結果與上述類似。

檢索只能用空格鍵的那些,我已經做了以下我的字典:

for key, value in dictionary1.items(): 
    if " " in key and value: 
     print(key + ":" + value) 

任何想法?

+0

你可能把部分*分配鍵:值對作爲密切*看得很輕。爲了訓練您的系統以確定其親密程度,您必須使用訓練數據製作神經網絡。簡單但不太精確的方法(我認爲你需要)將檢查每個字符順序的出現次數,並將該值與最大值相匹配 –

+0

我認爲你應該考慮一個詞接近算法。看看[一個答案的實現](http://stackoverflow.com/a/33389155/835591) – thalesmello

回答

0

您可以使用.split(),而不是如何您目前正在檢查空間:

for x in old_dict: 
    for i in range(0,2): 
     key = x.split()[i] 
     value = old_dict[x][0].split()[i] 
     new_dict[key] = value