我是新手,很抱歉问了一个重复的/愚蠢的问题,但我找不到答案。你知道吗
我正试图把(词典)列表的内容存储到一本新词典中。你知道吗
a={}
b=[]
c={"Name":"Claude","Surname":"Verde","Age":"35","City":"Paris"}
b.append(c)
c={"Name":"Jean","Surname":"Claude","Age":"22","City":"Paris"}
b.append(c)
c={"Name":"Sam","Surname":"Smith","Age":"42","City":"London"}
b.append(c)
c={"Name":"James","Surname":"Jones","Age":"44","City":"London"}
b.append(c)
for i in range(len(b)):
if b[i]['City'] == 'Paris':
a["Paris"]=([b[i]])
elif b[i]['City'] == 'London':
a["London"]=([b[i]])
a
结果:
{'Paris': [{'Name': 'Jean',
'Surname': 'Claude',
'Age': '22',
'City': 'Paris'}],
'London': [{'Name': 'James',
'Surname': 'Jones',
'Age': '44',
'City': 'London'}]}
不过,我想要一本包含一个城市所有居民的字典。你知道吗
上面的代码只存储列表中的第二个,而不是第一个。你知道吗
也就是说,希望得到下面的结果。你知道吗
我怎样才能做到这一点?你知道吗
非常感谢您的帮助。谢谢
{'Paris': [{'Name': 'Claude',
'Surname': 'Verde',
'Age': '35',
'City': 'Paris'},{'Name': 'Jean',
'Surname': 'Claude',
'Age': '22',
'City': 'Paris'}],
'London': [{'Name': 'Sam',
'Surname': 'Smith,
'Age': '42',
'City': 'London'},{'Name': 'James',
'Surname': 'Jones',
'Age': '44',
'City': 'London'}]}
使用
itertools.groupby
可以使用具有默认参数的
get
方法:缺点是每次插入元素时都会创建一个新列表。但是,如果你没有太多的数据就可以了。你知道吗
这带来了一些改进:
如果不想重新创建新列表:
或者也可以使用
defaultdict
而不是dict
。你知道吗当初始化时,我会这样处理:
请注意: 我很确定你可以把这些结合起来,形成这样的循环:
相关问题 更多 >
编程相关推荐