我需要以以下格式轉換 dict 串列
[{"key":"eff_date","value":"20202020"},{"key":"member_id","value":"33sasfafXCC"},{"key":"exp_date","value":"20992020"}]
成這種格式
{"eff_date":"20202020","member_id":"33sasfafXCC","exp_date":"20992020"}
我嘗試使用以下減少功能,但無法完全理解。
payload = [{"key":"eff_date","value":"20202020"},{"key":"member_id","value":"33sasfafXCC"},{"key":"exp_date","value":"20992020"}]
list = []
def keys(x,y):
return list.append({y['key'] : y['value']})
result = reduce(keys, payload,None)
任何幫助表示贊賞。
謝謝蘇姆
uj5u.com熱心網友回復:
你真的不需要reduce。你reduce什么都沒有。
嘗試一個簡單的字典理解:
result = {p["key"]:p["value"] for p in payload}
>>> result
{'eff_date': '20202020', 'member_id': '33sasfafXCC', 'exp_date': '20992020'}
uj5u.com熱心網友回復:
你可以編輯你的函式看起來像這樣:
payload = [{"key":"eff_date","value":"20202020"},{"key":"member_id","value":"33sasfafXCC"},{"key":"exp_date","value":"20992020"}]
def change(list):
newDict = {}
for dict in payload:
newDict[dict["key"]] = dict["value"]
return newDict
result = change(payload)
print(result)
輸出:
{'eff_date': '20202020', 'member_id': '33sasfafXCC', 'exp_date': '20992020'}
這將接收一個字典串列,遍歷每個字典,將鍵值對添加到新字典中,然后回傳該字典。
正如@not_speshal 提到的,您不需要內置reduce函式。
uj5u.com熱心網友回復:
請注意,您可以使用 來執行此操作functools.reduce,盡管您確實應該只使用字典理解,但一種有效的解決方案是:
>>> from functools import reduce
>>> data = [{"key":"eff_date","value":"20202020"},{"key":"member_id","value":"33sasfafXCC"},{"key":"exp_date","value":"20992020"}]
>>> def reducer(acc, x):
... acc[x['key']] = x['value']
... return acc
...
>>> reduce(reducer, data, {})
{'eff_date': '20202020', 'member_id': '33sasfafXCC', 'exp_date': '20992020'}
這并不漂亮 - 它依賴于副作用。如果您要依賴副作用,也可能只是一個 for 回圈。
使用新的 pip-update 運算子不依賴副作用的更“有原則”的方式|是:
>>> def reducer(acc, x):
... return acc | {x['key']:x['value']}
...
>>> reduce(reducer, data, {})
{'eff_date': '20202020', 'member_id': '33sasfafXCC', 'exp_date': '20992020'}
但這會不必要地低效,并且擴展性很差。
所以總而言之,在 Python 中最自然的方法就是:
result = {x['key']: x['value'] for x in data}
甚至只是 for 回圈形式:
result = {}
for x in data:
result[x['key']] = x['value']
reduce比任何一種基于解決方案都更可取
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/441195.html
標籤:Python python-3.x
上一篇:從IP地址范圍獲取城市
