从 Python 中的 dict_keys 选择所需元素时出现问题

Issue when selecting desired elements from dict_keys in Python

我有一个字典键列表 ['A_report1', 'A_report2', ..., 'A_report10','B_report1', 'B_report2', ..., 'B_report10',]。我想从这个 dict_keys 中提取所有 'report1'。换句话说,我应该只得到 'A_report1''B_report1'.

这是我试过的代码:

[report for report in list(dictionary.keys()) if 'report1' in report]

问题:它也会 return 'A_report10''B_report10',我只想要报告 1。无论如何要解决这个问题?

使用正则表达式怎么样?

import re
rx = re.compile(r'report1\b')
items = [report for report in df if rx.search(report)]

这是一个简单但 non-robust 的解决方案,其假设是您的所有报告名称都遵循格式 .*report<any int number>:

x = ['A_report10', 'B_report1', 'B_report2', 'B_report10']

report_1s = []

for i in x:
    if i[-7:]=='report1':
        report_1s.append(i)
        print(i)