要保持副本,並符合輸入格式:
import collections
import json
string = "[['q1', '0', 'q1'], ['q1', '1', 'q2'], ['q2', '0', 'q2'], ['q2', '1', 'q1']]"
d = collections.defaultdict(list)
for (k, v1, v2) in json.loads(string.replace("'",'"')):
d[k].append((v1, v2))
隨着eval
(如果你信任你的輸入):
import collections
string = "[['q1', '0', 'q1'], ['q1', '1', 'q2'], ['q2', '0', 'q2'], ['q2', '1', 'q1']]"
d = collections.defaultdict(list)
for (k, v1, v2) in eval(string):
d[k].append((v1, v2))
項
d的內容:
defaultdict(<type 'list'>, {
'q1': [('0', 'q1'), ('1', 'q2')],
'q2': [('0', 'q2'), ('1', 'q1')]
})
編輯:並沒有圖書館在所有。
string = "[['q1', '0', 'q1'], ['q1', '1', 'q2'], ['q2', '0', 'q2'], ['q2', '1', 'q1']]"
d = {}
for (k, v1, v2) in eval(string):
d.setdefault(k, []).append((v1, v2))
我無法使之成爲一個班輪雖然:-)
你不能在字典中重複的元素作爲鍵。 q1和q2在預期輸出中重複兩次,你不能擁有這個。 – user3 2014-12-04 08:25:51
除非你重新定義一個類改變一個Python dictionnary的行爲,但我想這不是目的:) – 2014-12-04 08:28:10
是有辦法的另一個值添加到字典中現有的密鑰? – user3246978 2014-12-04 08:29:54