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]
>>> [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)
| 归档时间: |
|
| 查看次数: |
2148 次 |
| 最近记录: |