作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
dict1={'s1':[1,2,3],'s2':[4,5,6],'a':[7,8,9],'s3':[10,11]}
我怎样才能得到'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]
或者,如果它需要是一个正则表达式
>>> 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]
您在这里看到的是一个嵌套的 list comprehension .相当于
result = []
for d in dict1:
for x in dict1[d]:
if regex.search(d):
result.append(x)
因此,它的效率有点低,因为正则表达式的测试方式过于频繁(并且元素是一个接一个地附加的)。所以另一种解决方案是
result = []
for d in dict1:
if regex.search(d):
result.extend(dict1[d])
关于python - 如何在python中通过正则表达式获取dict值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18030810/
我是一名优秀的程序员,十分优秀!