将列表值与字典的键值进行比较

Aus*_*ock 1 python dictionary list

我有一个代码列表

l = [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

以及以前见过的代码及其翻译的字典

d = {1: 'A', 2: 'B', 3: 'C' }
Run Code Online (Sandbox Code Playgroud)

我正在尝试将列表值与 dict 键进行比较,并使用匹配项的 dict 值创建一个新的 dict。我用下面的代码完成了这个:

x = {k: d[k] for k in l if k in d}
Run Code Online (Sandbox Code Playgroud)

但是,我也想保留未出现在现有字典中的列表值,因为这些值对于跟踪新值很重要。我想将这些存储在新的 dict 中,val 为“不匹配”或其他内容。我不确定如何以 Pythonic 的方式做到这一点。

最终判词:

{1: 'A', 2: 'B', 3: 'C', 4: 'no match'}
Run Code Online (Sandbox Code Playgroud)

我知道这可以通过从字典创建数据框和从列表和外部连接创建数据框来完成,但如果可能的话,我想在字典方面做得更好!

He3*_*xxx 5

您可以使用dict.get(),它可以采用默认值,如果在字典中找不到键,则返回该默认值:

x = {k: d.get(k, 'no match') for k in l} 
Run Code Online (Sandbox Code Playgroud)