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

时间:2021-05-25 18:42:44

标签: python list dictionary

我有一个代码列表

spring.datasource.url=jdbc:mysql://localhost:3306/DATABASE_NAME
spring.datasource.username=USERNAME
spring.datasource.password=PASSWORD

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

l = [1, 2, 3, 4]

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

d = {1: 'A', 2: 'B', 3: 'C' }

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

最终口述:

x = {k: d[k] for k in l if k in d}

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

1 个答案:

答案 0 :(得分:5)

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

x = {k: d.get(k, 'no match') for k in l}