Skip to main content
 首页 » 编程设计

Python:按键选择字典项

2025年05月04日14Leo_wl

我有这本字典:

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 (来自另一个问题)

b = {} 
for key in a: 
    if key == 'car%s'% (range (4)): 
        print (" %s : %s" % (key, a[key])) 
print(b) 

它返回{}

我希望得到:

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

我在这里错过了什么?

请您参考如下方法:

您正在以错误的方式检查前缀并且没有存储结果。你可以使用 str.startswith和听写理解来生成结果:

>>> 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 对象,这可能不是您期望的结果:

>>> 'car%s'% (range (4)) 
'carrange(0, 4)'