在CSDN论坛里面发现了一个帖子,问题如下:
数组如下:
[
{'ip':'192.168.1.1','xxx':'app1'},
{'ip':'192.168.1.1','yyy':'app2'},
{'ip':'192.168.1.2','xxx':'app3'},
{'ip':'192.168.1.2','yyy':'app4'},
{'ip':'192.168.1.3','xxx':'app5'},
{'ip':'192.168.1.3','yyy':'app6'},
]
像如上一个数组,里面包含多个IP的不同信息,我希望将其拆分为多个数组,如:
[{'ip':'192.168.1.1','xxx':'app1'},{'ip':'192.168.1.1','yyy':'app2'}],
[{'ip':'192.168.1.2','xxx':'app3'},{'ip':'192.168.1.2','yyy':'app4'}],
[{'ip':'192.168.1.3','xxx':'app5'},{'ip':'192.168.1.3','yyy':'app6'}]
或者这样也可以:
[
{'ip':'192.168.1.1','xxx':'app1','yyy':'app2'},
{'ip':'192.168.1.2','xxx':'app3','yyy':'app4'},
{'ip':'192.168.1.3','xxx':'app5','yyy':'app6'},
]
看到这个问题,我一下就来了兴趣,于是有了如下的代码片:#!/bin/usr/python
#coding:utf-8
values = [
{'ip':'192.168.1.1','xxx':'app1'},
{'ip':'192.168.1.1','yyy':'app2'},
{'ip':'192.168.1.2','xxx':'app3'},
{'ip':'192.168.1.2','yyy':'app4'},
{'ip':'192.168.1.3','xxx':'app5'},
{'ip':'192.168.1.3','yyy':'app6'},
]
def getResult_1(values):
res = []
ips = set([ values[i]['ip'] for i in range(0,len(values))])
for ip in ips:
tmp = []
for i in range(0,len(values)):
#获取相同的IP所在的字典
if ip == values[i]['ip']:
tmp.append(values[i]) #追加列表
res.append(tmp)
print res
return res
def getResult_2(values):
res = []
ips = set([ values[i]['ip'] for i in range(0,len(values))])
for ip in ips:
tmp = {}
for i in range(0,len(values)):
#获取相同的IP所在的字典
if ip == values[i]['ip']:
tmp.update(values[i]) #更新字典
res.append(tmp)
print res
return res
if __name__ == '__main__':
getResult_1(values)
getResult_2(values)