Mne*_*quo 2 python dictionary functional-programming list-comprehension clojure
我写了一段时间后写了一段蟒蛇,我有点生疏了,但我正以更实用的方式接近它.为了遵循我在clojure中使用的模式,我想使用map(或list comprehension)和assoc之类的东西在列表中的每个dict中设置键.
我有一个记录列表,我想用列表推导重组它们.
记录看起来像这样:
{
"timestamp":1232435235315,
"data": {
"foo": 2345,
"bar": 1454
}
}
Run Code Online (Sandbox Code Playgroud)
我想得到一个包含时间戳和数据键的字典.
newlist = [ assoc(x, "timestamp", x["timestamp"]) for x in mylist ]
Run Code Online (Sandbox Code Playgroud)
我可以很容易地实现一个assoc,但我希望它已经存在于一个库中:
def assoc(coll, k, v):
newcoll = coll.copy()
newcoll[k] = v
return newcoll
Run Code Online (Sandbox Code Playgroud)
有没有人知道一个已经包含这样的东西的图书馆或一个pythonic的方式简明扼要地做而不改变原始列表?
当然,你可以简单地使用dict(),例如:
old = {"a": 1}
new_one = dict(old, new_key=value)
#or
new_one = dict(old, {...})
Run Code Online (Sandbox Code Playgroud)
从 Python 3.9 开始,您还可以使用Dictionary Merge 和 Update Operators,尽管有些人可能会认为这不太明确。
代码片段将变为:
old = {"a": 1}
# 1. Merge operator
new_one = old | {"new_key": value}
## `old_one` is {"a": 1}
## `new_one` is {"a": 1, "new_key": value}
# 2. Update operator
old |= {"new_key": value}
## `old_one` becomes {"a": 1, "new_key": value}
Run Code Online (Sandbox Code Playgroud)