Python 3.x 按键分组并将值附加到列表
我正在尝试读取列表并获取密钥和值对Python 3.x 按键分组并将值附加到列表,python-3.x,dictionary,itertools,Python 3.x,Dictionary,Itertools,我正在尝试读取列表并获取密钥和值对 from itertools import groupby a=['x.site1.ca.zilla.wipro.com', 'y.site2.ca.zilla.wipro.com', 'z.site1.co.zilla.wipro.com'] d={} z=[] for x in (a): l=x.split(".") if(d[l[2]] in d)
from itertools import groupby
a=['x.site1.ca.zilla.wipro.com',
'y.site2.ca.zilla.wipro.com',
'z.site1.co.zilla.wipro.com']
d={}
z=[]
for x in (a):
l=x.split(".")
if(d[l[2]] in d):
d[l[2]].append(l[1])
else:
d[l[2]] = []
我得到了关键错误?为什么这是错误的
预期产出:
{ca:[site1,site2],co:[site1]}
编辑:由于在第一次迭代中,值
l[2]
不在字典d
-所以d[l[2]
抛出异常,所以您得到了keyrerror
a=['x.site1.ca.zilla.wipro.com',
'y.site2.ca.zilla.wipro.com',
'z.site1.co.zilla.wipro.com']
out = {}
for x in a:
x = x.split('.')
out.setdefault(x[2], []).append(x[1])
print(out)
印刷品:
{'ca': ['site1', 'site2'], 'co': ['site1']}
编辑:由于在第一次迭代中,值
l[2]
不在字典d
-所以d[l[2]
抛出异常,所以您得到了keyrerror
a=['x.site1.ca.zilla.wipro.com',
'y.site2.ca.zilla.wipro.com',
'z.site1.co.zilla.wipro.com']
out = {}
for x in a:
x = x.split('.')
out.setdefault(x[2], []).append(x[1])
print(out)
印刷品:
{'ca': ['site1', 'site2'], 'co': ['site1']}
它起作用了!!,你能给我解释一下为什么我的代码是错的吗?我还写了其他的“d[l[2]]=[]”来对付这个句柄键错误吗?它可以工作!!,你能解释一下为什么我的代码是错误的吗?我写了其他的“d[l[2]]=[]”来处理这个键错误吗?