我有一个这样的词典列表:
[{'name': 'comet1', 'coordinates': [15.01234516, 10.12345612]},
{'name': 'comet2', 'coordinates': [11.45678762, 12.56789876]},
{'name': 'comet3', 'coordinates': [13.31512314, 14.68123912]},
{'name': 'comet3', 'coordinates': [10.78876782, 11.23234321]}]
我尝试删除重复的名称,并将相应的坐标值仅附加到一个名称。所以列表可以是
[{'name': 'comet1', 'coordinates': [15.01234516, 10.12345612]},
{'name': 'comet2', 'coordinates': [11.45678762, 12.56789876]},
{'name': 'comet3', 'coordinates': [13.31512314, 14.68123912, 10.78876782, 11.23234321]}]
以上数据是从外部文件获取的,并重新构建为此格式。使用defaultdict和其他方法后,我不太清楚如何实现这一点。
这是我的尝试(逻辑错误在第二个for循环中。)
content = []
comets = {"name":comet_name, "coordinates":coordinates}
content.append(comets)
new_d = {}
for x in content:
for name in names: #names is a set containing all indivual comet names
if x["name"] == name:
print(x["name"])
new_d = {"name":name, "coordinates": x["coordinates"].append(coordinates)
答案 0 :(得分:1)
我可能会使用defaultdict
来收集坐标。这些方面的东西:
from collections import defaultdict
result = defaultdict(list)
for comet in initiallist:
result[comet['name']].extend(comet['coordinates'])
# Or for a list of tuples
result[comet['name']].append(tuple(comet['coordinates']))
这应该产生你所追求的结果(我可以告诉你)。
答案 1 :(得分:0)
我将假设你有足够的这些来处理你的源列表中的单个传递更好。此外,您仍然需要词典列表。
SET_ATTITUDE_TARGET
这应该会在comet_list中为每个彗星名称提供一个扁平的坐标列表。