PHP前端开发

如何将长得像字典的列表转换为真正的字典?

百变鹏仔 3个月前 (01-14) #Python
文章标签 字典

将长得像字典的列表转换为字典

有些情况下,我们可能会遇到一个列表,其元素看起来像字典,但实际上不是字典。例如:

a = [{'ip': '123.181.150.193', 'port': 4241},     {'ip': '114.238.223.98', 'port': 4237},     {'ip': '114.233.50.103', 'port': 4257},     {'ip': '221.8.243.135', 'port': 4275},     {'ip': '183.147.208.157', 'port': 4234},     {'ip': '117.24.80.213', 'port': 4228},     {'ip': '111.127.117.242', 'port': 4285},     {'ip': '27.150.95.69', 'port': 4213},     {'ip': '114.238.197.108', 'port': 4247},     {'ip': '49.74.57.244', 'port': 4268}]

为了将此列表有效地转换为字典,我们可以使用以下步骤:

  1. 提取列表中所有 ip 地址并将其存储在一个单独的列表中:
l_1 = [x['ip'] for x in a]
  1. 提取列表中所有端口并将其存储在另一个单独的列表中:
l_2 = [x['port'] for x in a]
  1. 使用 dict(zip(l_1, l_2)) 创建字典,其中 l_1 是 ip 地址列表,l_2 是端口列表:
result = dict(zip(l_1, l_2))

执行这些步骤后,result 将是一个字典,密钥是 ip 地址,值是相应的端口:

{'123.181.150.193': 4241, '114.238.223.98': 4237, '114.233.50.103': 4257, '221.8.243.135': 4275, '183.147.208.157': 4234, '117.24.80.213': 4228, '111.127.117.242': 4285, '27.150.95.69': 4213, '114.238.197.108': 4247, '49.74.57.244': 4268}