如何在python中通过regex获取dict值

Ste*_*lla 4 python regex dictionary

dict1={'s1':[1,2,3],'s2':[4,5,6],'a':[7,8,9],'s3':[10,11]}
Run Code Online (Sandbox Code Playgroud)

我如何获得与's'关键的所有值?喜欢dict1['s*']得到的结果是dict1['s*']=[1,2,3,4,5,6,10,11]

Tim*_*ker 6

>>> [x for d in dict1 for x in dict1[d] if d.startswith("s")]
[1, 2, 3, 4, 5, 6, 10, 11]
Run Code Online (Sandbox Code Playgroud)

或者,如果它需要是一个正则表达式

>>> regex = re.compile("^s")
>>> [x for d in dict1 for x in dict1[d] if regex.search(d)]
[1, 2, 3, 4, 5, 6, 10, 11]
Run Code Online (Sandbox Code Playgroud)

你在这里看到的是嵌套列表理解.它相当于

result = []
for d in dict1:
    for x in dict1[d]:
        if regex.search(d):
            result.append(x)
Run Code Online (Sandbox Code Playgroud)

因此,它的效率有点低,因为正则规则经常被测试(并且元素是逐个附加的).所以另一个解决方案是

result = []
for d in dict1:
    if regex.search(d):
       result.extend(dict1[d])
Run Code Online (Sandbox Code Playgroud)