2017-05-18 1 views
-3

Bonjour. J'ai besoin de votre aide les gars. J'ai deux listes ci-dessous.Ajouter un élément d'une liste à une autre liste

List_1= [ 
    'Sta  Pno  Azimuth  Distance  Latitude  Departure ', 
    'T1  X  170.7011111 22.236  21.9438  -3.593 ', 
    'T1  X  170.0  20.0   19.6962  -3.473 ', 
    'T2  X  30.22833333 6.083  -5.2559  -3.0625 ', 
    'T3  X  154.5155556 98.212  88.6562  -42.2573 ', 
    'T4  CHB  351.4977778 93.637  -92.6079  13.844 ', 
    '' ] 

List_2= [ 
    'Sta  Northing  Easting ', 
    'T1  2000   2000  ', 
    'T2  1500   1600  ', 
    'T3  2400   2200  ', 
    'T4  2600   2800  ', 
    '' ] 

Je veux attacher le nord et l'est des stations à la première liste. S'il vous plaît aider. Jusqu'à présent, j'ai essayé d'utiliser la fonction zip, puis de combiner les deux listes, mais le problème est que je n'ai aucune idée de comment faire correspondre un élément à un autre élément en utilisant une partie d'un élément comme référence pour l'autre élément.

+0

Vous devriez passer en revue la section sur la façon de poser une question sur Stack Overflow –

+0

Veuillez nous montrer ce que vous avez essayé et être plus précis sur quelque chose sur lequel vous êtes bloqué. SO n'est pas un site Web pour amener les gens à écrire du code pour vous. – Antimony

+0

Veuillez consulter [Comment poser une bonne question] (http://stackoverflow.com/help/how-to-ask) dans le [Centre d'aide] (http://stackoverflow.com/help). –

Répondre

0
# deal with headings separately from rest of data. 
# also split each heading into a list of string rather than single string. 
l1_headings, l2_headings = List_1.pop(0).split(), List_2.pop(0).split() 
# put each row of List_1 in a list of dictionary using headings as keys 
l1_dicts = [{k:v for k, v in zip(l1_headings, row.split())} for row in List_1 if row != ''] 
# put each row of List_2 in a dictionary of dictionaries indexed by 'Sta' 
l2_by_Sta = {} 
for row in List_2: 
    if row == '': continue 
    d = {k:v for k, v in zip(l2_headings, row.split())} 
    l2_by_Sta[d['Sta']] = d 
# update l1_dicts from data in l2_by_Sta 
for d in l1_dicts: 
    d.update(l2_by_Sta[d['Sta']]) 

l1_dicts contient maintenant:

[{'Azimuth': '170.7011111', 
    'Departure': '-3.593', 
    'Distance': '22.236', 
    'Easting': '2000', 
    'Latitude': '21.9438', 
    'Northing': '2000', 
    'Pno': 'X', 
    'Sta': 'T1'}, 
{'Azimuth': '170.0', 
    'Departure': '-3.473', 
    'Distance': '20.0', 
    'Easting': '2000', 
    'Latitude': '19.6962', 
    'Northing': '2000', 
    'Pno': 'X', 
    'Sta': 'T1'}, 
{'Azimuth': '30.22833333', 
    'Departure': '-3.0625', 
    'Distance': '6.083', 
    'Easting': '1600', 
    'Latitude': '-5.2559', 
    'Northing': '1500', 
    'Pno': 'X', 
    'Sta': 'T2'}, 
{'Azimuth': '154.5155556', 
    'Departure': '-42.2573', 
    'Distance': '98.212', 
    'Easting': '2200', 
    'Latitude': '88.6562', 
    'Northing': '2400', 
    'Pno': 'X', 
    'Sta': 'T3'}, 
{'Azimuth': '351.4977778', 
    'Departure': '13.844', 
    'Distance': '93.637', 
    'Easting': '2800', 
    'Latitude': '-92.6079', 
    'Northing': '2600', 
    'Pno': 'CHB', 
    'Sta': 'T4'}] 

Si vous devez écrire ces données dans un fichier texte utilisé csv.DictWriter.

+0

Wow ça a fonctionné parfaitement. Je vous remercie! Je prévoyais de le convertir en une liste de dictionnaires, mais malheureusement, je ne peux pas trouver un code qui donnera des résultats tout comme ce que vous avez fait. Im vraiment très gentil monsieur. Merci beaucoup. – Gjan21