首页 > 解决方案 > 循环遍历列表(带有子列表)并将匹配的 ID 分配给相同的键和该子列表中的所有相应值?

问题描述

我是python编码的新手,我无法解决以下问题:

我有一个列表,其中包含以字符串形式给出的不同动物(ID、日期、时间、纬度、经度)的跟踪点:

aList = [[id,date,time,lat,lon],
         [id2,date,time,lat,lon],
         [...]]

txt 文件非常大,并且 ID(一种独特的动物)多次出现:

IE:

aList = [['25','20-05-13','15:16:17','34.89932','24.09421'],
         ['24','20-05-13','15:16:18','35.89932','23.09421], 
         ['25','20-05-13','15:18:15','34.89932','24.13421'],
         [...]]

我要做的是在字典中对 ID 进行排序,因此每个唯一 ID 都将是键,所有日期、时间、纬度和经度都将是值。然后我想将每个单独的 ID 写入一个新的 txt 文件,以便特定 ID 的所有值都在一个 txt 文件中。输出应如下所示:

{'25':['20-05-13','15:16:17','34.89932','24.09421'],
      ['20-05-13','15:18:15','34.89932','24.13421'],
      [...],
 '24':['20-05-13','15:16:18','35.89932','23.09421'],
      [...]
}

我尝试了以下方法(以及许多其他不起作用的解决方案):

items = {}
for line in aList:
    key,value = lines[0],lines[1:]
    items[key] = value

这会产生一个具有该特定键列表中最后一个值的键:

{'25':['20-05-13','15:18:15','34.89932','24.13421'],
 '24':['20-05-13','15:16:18','35.89932','23.09421']}

如何遍历我的列表并将相同的 ID 分配给相同的键和所有相应的值? 有什么简单的解决方案吗?欢迎其他“更易于实施”的解决方案!

我希望这是有道理的:)

标签: python-2.7listdictionaryunique-key

解决方案


尝试添加与列表列表相同 ID 的所有列表:

aList = [['25','20-05-13','15:16:17','34.89932','24.09421'],
         ['24','20-05-13','15:16:18','35.89932','23.09421'],
         ['25','20-05-13','15:18:15','34.89932','24.13421'],
         ]

items = {}
for line in aList:
    key,value = line[0],line[1:]
    if key in items:
        items[key].append(value)
    else:
        items[key] = [value]

print items

输出:

{'24': [['20-05-13', '15:16:18', '35.89932', '23.09421']], '25': [['20-05-13', '15:16:17', '34.89932', '24.09421'], ['20-05-13', '15:18:15', '34.89932', '24.13421']]}

推荐阅读