我需要能够提取所有具有类型名称的键的列表: carro_X
,其中X
是一个数字。产量:
lista = ['carro_1','carro_2','carro_50']
从:
diccionario = {
'carro_1':'renault',
'carro_2':'audi',
'carro_50':'sprint',
'camioneta':'tucson'
}
答案 0 :(得分:2)
如何使用str.startswith
:
使用list comprehension(无需使用iterkeys
或keys
方法;迭代字典yeidls密钥):
>>> diccionario={
... 'carro_1':'renault',
... 'carro_2':'audi',
... 'carro_50':'sprint',
... 'camioneta':'tucson',
... }
>>> [key for key in diccionario if key.startswith('carro_')]
['carro_1', 'carro_50', 'carro_2']
注意字典没有订单。如果您想要有序的结果,则需要对结果进行排序。
>>> sorted(['carro_1', 'carro_50', 'carro_2'], key=lambda key: int(key.split('_')[1]))
['carro_1', 'carro_50', 'carro_2']
<强>更新强>
更正确的是,我应该考虑数字部分。使用str.isdigit
检查字符串是否由数字组成。
>>> [key for key in diccionario
... if key.startswith('carro_') and key.split('_', 1)[1].isdigit()]
['carro_1', 'carro_50', 'carro_2']
答案 1 :(得分:1)
import re
pattern = re.compile(r'^carro_[0-9]+$') # !match "SUBMARINE_carro_007Tutti a posto"
key_arr = [key for key in diccionario if pattern.match(key)]
请记住编译模式一次并重复使用它:)
答案 2 :(得分:0)
如果您只想获取carro X,请编辑字典并使用它:
carro = {
1:'renault',
2:'audi',
50:'sprint'
}
print carro[50];
print carro[2];