以下是一步一步的方法。
In [50]: mylist = ['abc=ddd', 'ef', 'ghj', 'jkl=yui', 'rty']
In [51]: [element.split('=') for element in mylist]
Out[51]: [['abc', 'ddd'], ['ef'], ['ghj'], ['jkl', 'yui'], ['rty']]
In [52]: [element.split('=') + [1] for element in mylist]
Out[52]: [['abc', 'ddd', 1], ['ef', 1], ['ghj', 1], ['jkl', 'yui', 1], ['rty', 1]]
In [53]: [(element.split('=') + [1])[:2] for element in mylist]
Out[53]: [['abc', 'ddd'], ['ef', 1], ['ghj', 1], ['jkl', 'yui'], ['rty', 1]]
In [54]: dict((element.split('=') + [1])[:2] for element in mylist)
Out[54]: {'abc': 'ddd', 'ef': 1, 'ghj': 1, 'jkl': 'yui', 'rty': 1}
- 爲了您的列表轉換在50行至一個字典,你需要將其轉換爲列表中的第53行
- 51.第一步是每個元素分割線這個列表由等號表示。現在每個元素都被轉換爲一個1或2個元素的列表。注意一些像
'ef'
這樣的元素不具有等號,我們將不得不修復
- 第52行。接下來,我們在每個子列表中追加1。這應該照顧有1個元素的子列表,但是使一些子列表長3個元素
- 第53行:我們通過只取前兩個元素並將第三個元素放棄(如果適用),將所有子列表標準化爲2元素子列表。此列表現在以正確的格式轉換成字典
- 第54行。最後一步是將此列表轉換爲字典。由於
dict
類可以採用生成器表達式,因此我們可以安全地刪除方括號。
就這樣,這裏是片段:
mylist = ['abc=ddd', 'ef', 'ghj', 'jkl=yui', 'rty']
mydict = dict((element.split('=') + [1])[:2] for element in mylist)
請包括你試過的代碼,並與它的問題。 –
你需要一些解析器邏輯,它檢測包含'='的列表元素並將它們分成鍵和值。 – nucleon