基本上,我想将列表消息中的所有词典用相同的键(name
)分组到不同的列表中。我应该如何进行?
我当时正在考虑进行某种两个循环,但是似乎没有任何作用。
messages={('name': FLR345, 'latitude': 34.244, 'longitude': -23.564), ('name': FLR33, 'latitude': 34.24432, 'longitude': -24.53),('name': FLR345, 'latitude': 35.244, 'longitude': -26.564), ('name': FLR31, 'latitude': 30.244, 'longitude': -22.564)}
Drone1={('name': FLR345, 'latitude': 34.244, 'longitude': -23.564),'name': FLR345, 'latitude': 35.244, 'longitude': -26.564)}
Drone2={('name': FLR33, 'latitude': 34.24432, 'longitude': -24.53)}
Drone3={('name': FLR31, 'latitude': 30.244, 'longitude': -22.564)}
def split
for i in range(len(messages))
for j in range(len(messages))
if .......
Dronei=....
答案 0 :(得分:0)
尽管我没有完全理解您的message数据结构,但我根据您的描述做出了一个假设,即它可能是一个包含字典作为元素的元组(反之亦然,这就是您的问题所包含的内容)。如果是这种情况,下面的解决方案可能会起作用,尽管您可能需要进行一些更改,但是这个想法看起来很好:
否则将它们添加为新条目
messages = ({'name': 'FLR345', 'latitude': 34.244, 'longitude': -23.564},
{'name': 'FLR33', 'latitude': 34.24432, 'longitude': -24.53},
{'name': 'FLR345', 'latitude': 35.244, 'longitude': -26.564},
{'name': 'FLR31', 'latitude': 30.244, 'longitude': -22.564})
messages_grouped = {}
name_to_message_group = {}
for i in range(len(messages)):
#check if the current message name has a group assigned
if messages[i]['name'] in name_to_message_group.keys():
#if yes, append the current message to existing group
messages_grouped[name_to_message_group[messages[i]['name']]] += (messages[i],)
else:
#else add the name to group mapping first
name_to_message_group[messages[i]['name']] = 'Drone' + str(i)
#then add the group and message as new elements
messages_grouped['Drone' + str(i)] = tuple()
messages_grouped['Drone' + str(i)] += (messages[i],)
print (messages_grouped)