假设我们有如下字典项目的列表:-
items_list = [{message:Hello There!, name: Smriti, ts:123456}, {message:Hello There!,name: Simran, ts:56789},{message:Heya, name: Pankhuri, ts:897652}]如果消息值中的regex "Hello“,那么将tsval存储在一个列表中。因此,我的输出应该是:只有当tsval与用于regex "Hello“的messageval匹配时,才能列出带有tsval的项。
Output_list = [ 123456, 56789]我尝试了如下方法,如下代码所示:
import re
items_list = [{"message":"Hello There!", "name": "Smriti", "ts":123456},{"message":"Hello There!","name": "Simran", "ts":56789},{"message":"Heya"," name": "Pankhuri", "ts":897652}]
data = []
for item in items_list:
if re.match(".*Hello", item['message']):
data.append(item)
data_ts = [item['ts'] for item in data]
print(data_ts)有什么更好的方法吗?感谢任何好的建议。
发布于 2022-03-04 09:22:16
你能做到的
items_list = [{"message":"Hello There!", "name": "Smriti", "ts":123456},{"message":"Hello There!","name": "Simran", "ts":56789},{"message":"Heya"," name": "Pankhuri", "ts":897652}]
result = [item["ts"] for item in items_list if re.match(".*Hello", item["message"])]
print(result)发布于 2022-03-04 09:24:28
正如你在评论中所说:
,但我认为它看起来更复杂,所以如果有任何更好的方法这样做的话。
不使用regex实现目标的最简单方法:
items_list = [{"message":"Hello There!", "name": "Smriti", "ts":123456}, {"message":"Hello There!","name": "Simran", "ts":56789},{"message":"Heya", "name": "Pankhuri", "ts":897652}]
data_ts = [item['ts'] for item in items_list if "Hello" in item['message']]
print(data_ts)这给了我:
[123456, 56789]附加说明:
如果您想摆脱区分大小写的问题,可以这样使用.upper():
data_ts = [item['ts'] for item in items_list if "Hello".upper() in item['message'].upper()]https://stackoverflow.com/questions/71347328
复制相似问题