dya*_*dya 4 python dictionary key python-3.x
我有这本词典:
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')
}
Run Code Online (Sandbox Code Playgroud)
从上面的字典中,我想创建一个仅包含“car%s”的新字典
我正在使用这个代码片段(来自另一个问题)
b = {}
for key in a:
if key == 'car%s'% (range (4)):
print (" %s : %s" % (key, a[key]))
print(b)
Run Code Online (Sandbox Code Playgroud)
它返回 {}
我期望得到:
a = {
'car1': ('high cp', 'low fd', 'safe'),
'car2': ('med cp', 'med fd', 'safe'),
'car3': ('low cp', 'high fd', 'safe'),
}
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么?
您检查前缀的方式错误,并且没有存储结果。您可以使用str.startswithdict 理解来生成结果:
>>> 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')}
Run Code Online (Sandbox Code Playgroud)
您当前的检查不是在格式字符串中插入数字,而是range在那里插入对象,这可能不是您期望的结果:
>>> 'car%s'% (range (4))
'carrange(0, 4)'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22656 次 |
| 最近记录: |