Lui*_*uez 1 python dictionary list-comprehension
来自两本词典:
d1 = {a:a for a in 'abcdefg'}
d2 = {n:n for n in range(10)}
Run Code Online (Sandbox Code Playgroud)
我怎样才能创建第三个,例如:
new_dict = {k:d1[k] if k in d1.keys() else k:d2[k] for k in 'abc123' }
Run Code Online (Sandbox Code Playgroud)
它抛出语法错误,但使用列表理解似乎没问题:
[a if a else 2 for a in [0,1,0,3]]
out[]: [2, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
此外,为什么这有效:
{k:d1[k] for k in 'abc123' if k in d1.keys() }
Run Code Online (Sandbox Code Playgroud)
这不是:
{k:d1[k] if k in d1.keys() for k in 'abc123' }
Run Code Online (Sandbox Code Playgroud)
您不能像这样在三元条件部分中使用键值对。else
改为这样做:
new_dict = {k: d1[k] if k in d1 else d2[int(k)] for k in 'abc123'}
# ^^<- make value d2[int(k)] on else
print(new_dict)
#{'2': 2, '1': 1, 'b': 'b', 'a': 'a', 'c': 'c', '3': 3}
Run Code Online (Sandbox Code Playgroud)
请注意,if k in d1检查是否k是字典中的键d1。无需调用该keys方法。