按键分组并将值附加到列表

问题描述

我正在尝试阅读列表并获取键和值对

 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]}

解决方法

编辑:您收到KeyError,因为在第一次迭代中,值l[2]不在字典d中-因此d[l[2]]引发异常。

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']}