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]]=[]”来处理这个键错误吗?