Python: 选择字典项通过关键字

2024-10-01 13:43:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有本字典:

a = { 
    'car1': ('high cp', 'low fd', 'safe'),
    'car2': ('med cp', 'med fd', 'safe'), 
    'car3': ('low cp', 'high fd', 'safe'), 
    'taxi1': ('high cp', 'low fd', 'safe', 'med wt'), 
    'taxi2': ('high cp', 'low fd', 'safe', 'high wt'), 
    'taxi3': ('high cp', 'low fd', 'safe', 'high wt')
}

从上面的字典中,我想创建一个只包含“car%s”的新字典

我用这个code snippet(来自另一个问题)

^{pr2}$

它返回{}

我希望得到:

a = { 
    'car1': ('high cp', 'low fd', 'safe'),
    'car2': ('med cp', 'med fd', 'safe'), 
    'car3': ('low cp', 'high fd', 'safe'), 
}

我错过了什么?在


Tags: 字典codemedcpsafelowhighwt
3条回答

如果要添加包含单词car的键,则它可以工作:

a = { 
    'car1': ('high cp', 'low fd', 'safe'),
    'car2': ('med cp', 'med fd', 'safe'), 
    'car3': ('low cp', 'high fd', 'safe'), 
    'taxi1': ('high cp', 'low fd', 'safe', 'med wt'), 
    'taxi2': ('high cp', 'low fd', 'safe', 'high wt'), 
    'taxi3': ('high cp', 'low fd', 'safe', 'high wt')
}

b = {}
for key in a:
    if 'car' in key:
        print (key, a[key])
        b[key] = a[key]
print(b)

这是有效的:

new_dict = {}

for k in a.keys():
    if 'car' in k:
        new_dict[k] = a[k]

结果:

^{pr2}$

你检查前缀的方式不对,而且没有存储结果。您可以使用^{}和dict comprehension生成结果:

>>> a = { 
... 'car1': ('high cp', 'low fd', 'safe'),
... 'car2': ('med cp', 'med fd', 'safe'), 
... 'car3': ('low cp', 'high fd', 'safe'), 
... 'taxi1': ('high cp', 'low fd', 'safe', 'med wt'), 
... 'taxi2': ('high cp', 'low fd', 'safe', 'high wt'), 
... 'taxi3': ('high cp', 'low fd', 'safe', 'high wt')
... }
>>> res = {k: v for k, v in a.items() if k.startswith('car')}
>>> res
{'car2': ('med cp', 'med fd', 'safe'), 'car3': ('low cp', 'high fd', 'safe'), 'car1': ('high cp', 'low fd', 'safe')}

当前的检查不是在格式字符串中插入数字,而是在那里插入range对象,这可能不是您预期的结果:

^{pr2}$

相关问题 更多 >