我是python新手,我也是;尝试按键对现有python字典进行分组。 我有一本这样的字典
a = {'a1':'obj_1','b1':'obj_2','c1':'obj_3','a2':'obj_4','b2':'obj_5','c2':'obj_6'}
我想创建另一个字典,将所有项目分组,以“a”、“b”、“c”开头,如下所示:
{'aonly': {'a1': 'obj_1','a2': 'obj_4'}, 'bonly': {'b1': 'obj_2','b2': 'obj_5'}, 'conly': {'c1': 'obj_3','c2': 'obj_6'}}
我尝试的解决方案是:
d = {}
for k,v in a.items():
print(k)
print(v)
if 'a' in k:
d.setdefault('a',{k:v})
elif 'b' in k:
d.setdefault('b',{k:v})
elif 'c' in k:
d.setdefault('c',{k:v})
print(d)
但这并不能提供正确的输出
我尝试的另一个解决方案是
l= []
m = []
n = []
d = {}
for i in a:
if 'a' in i:
l.append({i:a[i]})
d['aonly'] = l
elif 'b' in i:
m.append({i:a[i]})
d['bonly'] = m
elif 'c' in i:
n.append({i:a[i]})
d['conly'] = n
print(d)
这类服务于我的目的,但由于使用列表等而无效。是否有更好的方法解决此问题
另外,在第二段代码中, 为什么一行作业会产生奇怪的结果
l = m = n = []
请告知
我从collections模式中通读了defaultDict,但对我的要求没有太大的混淆。有人能帮我吗
在发布问题后,我尝试了这个方法,目的是为了。但我喜欢使用defaultdict的解决方案,而且执行速度也相当快
使用
collections.defaultdict
相关问题 更多 >
编程相关推荐