我試圖操縱我的數據,我面臨一些問題,我想你們中的一些人會知道如何這樣做。python新詞典如果值匹配鍵值內部字典
首先,我安排我的數據,如字典的這個名單:
data = [{'compound' : 'molecule1', 'time' : 18, 'temp' : 20, 'orientation' : 'top', 'n' : 1, 'result' : 2.5} , {'compound' : 'molecule1', 'time' : 18, 'temp' : 20, 'orientation' : 'top', 'n' : 2, 'result' : 3.8}, {'compound' : 'molecule1', 'time' : 18, 'temp' : 20, 'orientation' : 'top', 'n' : 3, 'result' : 2.7}, {'compound' : 'molecule1', 'time' : 18, 'temp' : 20, 'orientation' : 'bottom', 'n' : 1, 'result' : 34.2} , {'compound' : 'molecule1', 'time' : 18, 'temp' : 20, 'orientation' : 'bottom', 'n' : 2, 'result' : 38.6}, {'compound' : 'molecule1', 'time' : 18, 'temp' : 20, 'orientation' : 'bottom', 'n' : 3, 'result' : 27.3}]
正如你看到的,變更值方向,複製數ñ和結果。
我試圖讓這個新的安排:
arrangeData = [{'compound' : 'molecule1', 'time' : 18, 'temp' : 20, 'orientation' : 'top', n : [1,2,3], 'result' : [2.5, 3.8, 2.7]}, {'compound' : 'molecule1', 'time' : 18, 'temp' : 20, 'orientation' : 'bottom', n : [1,2,3], 'result' : [34.2, 38.6, 27.3]}]
正如你可能已經猜到,快譯通我的實際數據列表包含多個複合,時間,溫度
我的第一個愚蠢的假設是循環在每個元素上:
for d in data:
if d[0] == 'molecule1':
if d[1] == 18:
if d[2] == 20
...
但是它很難編碼,總的來說效率不高。
於是,我試圖用每個值的列表:再次
compound = ['molecule1', 'molecule2', 'molecule3]
time = [18, 24]
temp = [20, 37]
orientation = ['top', 'bottom']
和循環每個列表:
for d in data:
for c in compound:
for t in time:
for tp in temp:
for o in orientation:
if d[0] == c:
...
愚蠢的爲好,因爲所有的數據都在我的字典的名單,所以引入價值清單似乎是一種錯誤的方式。
這裏有幾個問題:
- 我應該用另一種格式每個股票的條件和結果,而不是一個字典?
- 如何檢查dict的值並創建一個新的數據字典(如上面提到的arrangeData)?
編輯1
感謝海武那正是我尋找!