Python实现指定格式列表转换为含id、Ipaddr字段的嵌套字典
实现方案
需求说明
现有存储用户信息的列表List1,列表内每个元素均为序号-用户名-IP地址格式的字符串,需将其转换为指定结构的字典:
- 字典顶级键为每条记录对应的用户名
- 每个顶级键对应嵌套字典作为值,包含两个固定字段:
id:存储对应记录的序号,值为整数类型Ipaddr:存储对应记录的IP地址,值为字符串类型
完整代码
# 原始用户数据列表 List1 = ["1-Delphinia-65.61.138.207", "2-Lennie-74.37.240.220", "3-Shayne-174.76.131.156", "4-Veriee-59.20.115.49", "5-Val-172.101.94.229", "6-Lanny-1.16.47.151", "7-Laureen-117.2.197.11", "8-Kristyn-63.21.195.62", "9-Arlana-92.84.0.112", "10-Arney-49.145.219.15"] user_info_dict = {} for record in List1: # 按横杠分割字符串,指定最多分割2次,避免后续内容含横杠时拆分错误 record_id, username, ip_addr = record.split('-', 2) user_info_dict[username] = { "id": int(record_id), "Ipaddr": ip_addr }
简洁写法(字典推导式):
user_info_dict = { username: {"id": int(rid), "Ipaddr": ip} for rid, username, ip in (item.split('-', 2) for item in List1) }
转换结果
运行代码后得到的目标字典结构如下:
{ 'Delphinia': {'id': 1, 'Ipaddr': '65.61.138.207'}, 'Lennie': {'id': 2, 'Ipaddr': '74.37.240.220'}, 'Shayne': {'id': 3, 'Ipaddr': '174.76.131.156'}, 'Veriee': {'id': 4, 'Ipaddr': '59.20.115.49'}, 'Val': {'id': 5, 'Ipaddr': '172.101.94.229'}, 'Lanny': {'id': 6, 'Ipaddr': '1.16.47.151'}, 'Laureen': {'id': 7, 'Ipaddr': '117.2.197.11'}, 'Kristyn': {'id': 8, 'Ipaddr': '63.21.195.62'}, 'Arlana': {'id': 9, 'Ipaddr': '92.84.0.112'}, 'Arney': {'id': 10, 'Ipaddr': '49.145.219.15'} }
内容的提问来源于stack exchange,提问作者Aman Miglani
相关产品推荐
相关产品推荐

