用 Python (3.8) 做一些實驗,現在我遇到了一個可能很愚蠢的問題。
我有一個物件串列(實際上是字典),我需要為串列中的每個條目設定一個值。
假設我的物件/字典是這樣的:
{
"name": "Joe",
"surname": "Black"
}
對于串列中的每個專案,我想分配一個新值:full_name: name " " surname.
目前我正在嘗試這樣的事情(records我的字典串列在哪里):
records = map(lambda item: item["full_name"] = item["name"] " " item["surname"]; return item, records)
但這可能甚至不是有效的 Python 語法。
你能建議我實作這一目標的正確方法嗎?有沒有辦法使用 for 回圈來實作它?
uj5u.com熱心網友回復:
一個簡單的for回圈沒有錯:
people = [{
"name": "Joe",
"surname": "Black"
}]
for i in people:
i["fullname"] = i["name"] " " i["surname"]
uj5u.com熱心網友回復:
上述解決方案將起作用,但實際上會創建一個串列副本,records并在變數中進行修改result;如果您只想將屬性添加到現有串列中的現有專案,您可以執行以下操作:
for record in records:
record["fullname"] = f"{record['name']} {record['surname']}"
uj5u.com熱心網友回復:
這是解決此問題的一種方法,請注意,這將使用字典物件創建全新的串列。
>>> records = [{"name": "Joe1", "surname": "Black"}, {"name": "Joe2", "surname": "Black"}]
>>>
>>> result = [
... {**record, "fullname": record["name"] " " record["surname"]}
... for record in records
... ]
>>> print(result)
[{'name': 'Joe1', 'surname': 'Black', 'fullname': 'Joe1 Black'}, {'name': 'Joe2', 'surname': 'Black', 'fullname': 'Joe2 Black'}]
uj5u.com熱心網友回復:
添加另一個版本:
lst = [{"name": "Joe", "surname": "Black"}]
lst = [dict(full_name=f'{d["name"]} {d["surname"]}', **d) for d in lst]
print(lst)
印刷:
[{'full_name': 'Joe Black', 'name': 'Joe', 'surname': 'Black'}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/468162.html
