2017-05-18 4 views
-3

Guten Tag. Ich brauche deine Hilfe Jungs. Ich habe zwei Listen unten gezeigt.Anfügen eines Elements aus einer Liste an eine andere 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  ', 
    '' ] 

Ich möchte den Nordwert und den Ostwert der Stationen an die erste Liste anhängen. Bitte helfen Sie. Bis jetzt habe ich versucht, die Zip-Funktion zu verwenden und dann die beiden Listen zu kombinieren, aber das Problem ist, dass ich keine Ahnung habe, wie man ein Element mit einem anderen Element vergleicht, indem man einen Teil eines Elements als Referenz für den Abgleich mit dem anderen Element verwendet.

+0

Sie sollten durch den Abschnitt gehen, wie Sie eine Frage auf Stack Overflow –

+0

stellen Bitte zeigen Sie uns, was Sie ausprobiert haben und genauer zu etwas, auf dem Sie stecken bleiben. SO ist keine Webseite, um Leute dazu zu bringen, Code für dich zu schreiben. – Antimony

+0

Siehe [Wie stelle ich eine gute Frage?] (Http://stackoverflow.com/help/how-to-ask) in der [Hilfe] (http://stackoverflow.com/help). –

Antwort

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 jetzt enthält:

[{'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'}] 

Wenn Sie diese Daten in eine Textdatei verwenden csv.DictWriter schreiben müssen.

+0

Wow, es hat perfekt funktioniert. Vielen Dank! Ich hatte vor, es in eine Liste von Wörterbüchern zu konvertieren, aber leider kann ich keinen Code finden, der Ergebnisse liefert, wie Sie es getan haben. Ich bin wirklich sehr dankbar. Ich danke dir sehr. – Gjan21

Verwandte Themen