python - 如何在循环中的python代码中添加日志信息
问题描述
下面是词典
有两个id,我需要生成
完成第一个 ID 的提取后,我需要获得一个信息,说明 First id(100) 已完成
一旦完成第二个 id 的提取,我需要获得一个信息,说明第二个 id(101) 已完成
logger.info('extraction id' + str(id) + 'completed')
logger.info('extraction id' + + str(id) + 'completed')
预计出局
test = [{"id":"100","name":"A",
"Business":[{"id":"7","name":"Enterprise"},
{"id":"8","name":"Customer"}],
"policies":[{"id":"332","name":"Second division","parent":"Marketing"},
{"id":"3323","name":"First division","parent":"Marketing"}]},
{"id":"101","name":"B",
"Business":[{"id":"7","name":"Enterprise"},
{"id":"8","name":"Customer"}],
"policies":[{"id":"332","name":"Second division","parent":"Marketing"},
{"id":"3323","name":"First division","parent":"Marketing"}]}]
代码
def do_the_thing(lst):
resp = []
parents_mapper = {
'Marketing': 'level1',
'Advertising': 'level2'
}
for el in lst:
d = {
'id': el['id'],
'name': el['name'],
'Business': [],
'level1': [],
'level2': []
}
for business in el.get('Business', []):
business_name = business.get('name')
if business_name:
d['Business'].append(business_name)
for policy in el.get('policies', []):
policy_parent = policy.get('parent')
parent_found = parents_mapper.get(policy_parent)
policy_name = policy.get('name')
if parent_found and policy_name:
d[parent_found].append(policy_name)
resp.append(d)
return resp
#def lambda_handler(event,context):
if __name__ == '__main__':
import pprint
pp = pprint.PrettyPrinter(4)
pp.pprint(do_the_thing(test))
2个ID的输出
[
{
"id": "100",
"name": "A",
"Business": ["Enterprise", "Customer"],
"level1": ['Second division', 'First division'],
"level2": [None ]
},
{
"id": "101",
"name": "B",
"Business": ["Enterprise", "Customer"],
"level1": ['Second division', 'First division'],
"level2": [None ]
}
]
第一个 id 完成然后我将完成extraction id' 100 is completed'
第二个 id 然后我将extraction id' 10
完成'`
** 预期 out_one
extraction id' 100 is completed'
extraction id' 101 is completed'
** 预期 out_two
extraction Business' 100 is completed'
extraction policy' 100 is completed'
extraction level1' 100 is completed'
extraction Business' 101 is completed'
extraction policy' 101 is completed'
extraction level1' 101 is completed'
解决方案
以下代码:
import logging
logging.basicConfig(format='%(message)s', filename='output.log',level=logging.INFO)
test = [{"id":"100","name":"A",
"Business":[{"id":"7","name":"Enterprise"},
{"id":"8","name":"Customer"}],
"policies":[{"id":"332","name":"Second division","parent":"Marketing"},
{"id":"3323","name":"First division","parent":"Marketing"}]},
{"id":"101","name":"B",
"Business":[{"id":"7","name":"Enterprise"},
{"id":"8","name":"Customer"}],
"policies":[{"id":"332","name":"Second division","parent":"Marketing"},
{"id":"3323","name":"First division","parent":"Marketing"}]}]
def do_the_thing(lst):
resp = []
parents_mapper = {
'Marketing': 'level1',
'Advertising': 'level2'
}
for el in lst:
d = {
'id': el['id'],
'name': el['name'],
'Business': [],
'level1': [],
'level2': []
}
for business in el.get('Business', []):
business_name = business.get('name')
if business_name:
d['Business'].append(business_name)
if business:
logging.info(f"extraction Business' {d['id']} is completed'")
parents = []
for policy in el.get('policies', []):
policy_parent = policy.get('parent')
parent_found = parents_mapper.get(policy_parent)
policy_name = policy.get('name')
if parent_found and policy_name:
d[parent_found].append(policy_name)
if parent_found not in parents:
logging.info(f"extraction {parent_found}' {d['id']} is completed'")
parents.append(parent_found)
if policy:
logging.info(f"extraction policy' {d['id']} is completed'")
logging.info(f"extraction id' {d['id']} is completed'")
resp.append(d)
return resp
#def lambda_handler(event,context):
if __name__ == '__main__':
import pprint
pp = pprint.PrettyPrinter(4)
print("Behold Magic in Progress...")
the_thing_result = do_the_thing(test)
print("\nThe parsed dictionary:")
pp.pprint(the_thing_result)
有两个输出:
输出:
Behold Magic in Progress...
The parsed dictionary:
[ { 'Business': ['Enterprise', 'Customer'],
'id': '100',
'level1': ['Second division', 'First division'],
'level2': [],
'name': 'A'},
{ 'Business': ['Enterprise', 'Customer'],
'id': '101',
'level1': ['Second division', 'First division'],
'level2': [],
'name': 'B'}]
登录“输出.log”:
extraction Business' 100 is completed'
extraction level1' 100 is completed'
extraction policy' 100 is completed'
extraction id' 100 is completed'
extraction Business' 101 is completed'
extraction level1' 101 is completed'
extraction policy' 101 is completed'
extraction id' 101 is completed'
推荐阅读
- arduino - Arduino错误:'['之前的预期不合格ID
- python - 在熊猫中应用功能
- reactjs - 在标题中搜索并更新组件
- .net - 如何在没有 DbOptions 的情况下获取连接字符串?
- ruby-on-rails - 在子类中将公共 setter 方法设为私有
- c - 从不兼容的指针类型传递“发送”的参数 2
- python - 在 SQLAlchemy 中跟踪插入
- python-3.x - 如何在驱动程序的列表中跟踪我为一个类创建的所有对象?
- android - android gridLayoutManager - 当recyclerview被限制在屏幕的左右两侧时如何使间距相等
- javascript - ReactJS:如何在默认情况下在材料表中进行选择?