我有一個字符串'{"News":"news", "News":"politics", "News":"breaking", "News":"stories"}'
,我試圖將其轉換爲字典。我用json.loads()
和ast.literal_eval()
來轉換它們,但似乎這兩種方法只採用最後一個鍵值對。字符串字符與多個值爲一個鍵
是否有解決此問題的單線解決方案?或者我需要更復雜的東西?
我有一個字符串'{"News":"news", "News":"politics", "News":"breaking", "News":"stories"}'
,我試圖將其轉換爲字典。我用json.loads()
和ast.literal_eval()
來轉換它們,但似乎這兩種方法只採用最後一個鍵值對。字符串字符與多個值爲一個鍵
是否有解決此問題的單線解決方案?或者我需要更復雜的東西?
假設字符串是其他有效JSON,您可以使用object_pairs_hook
參數的JSON解碼器:
import json
def multidict(l):
result = {}
for k, v in l:
result.setdefault(k, []).append(v)
return result
data = '{"News":"news", "News":"politics", ' \
'"News":"breaking", "News":"stories"}'
data = json.loads(data, object_pairs_hook=multidict)
assert data == {'News': ['news', 'politics', 'breaking', 'stories']}
不錯。我不知道[鉤子](https://docs.python.org/2.7/library/json.html#json.load)。 –
你可以使用defaultdict
與list
:
>>> from collections import defaultdict
>>> dictionary = defaultdict(list)
>>> values = '{"News":"news", "News":"politics", "News":"breaking", "News":"stories"}'
>>> for pair in values.strip('{}').split(','):
... key, value = pair.strip().split(':')
... key = key.strip('"')
... value = value.strip('"')
... dictionary[key].append(value)
結果:
>>> dictionary
{'News': ['news', 'politics', 'breaking', 'stories']}
詞典不能有重複的鍵。 –
我知道;有沒有辦法將這個載入到一個字典中,並且「News」作爲關鍵字並且加載了四個單獨的值? – xtheking
你從哪裏得到這些數據?當然有辦法解析它,但它不會很有趣/很漂亮。 –