• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

porównywanie list zagnieżdżonych

Object Storage Arubacloud
0 głosów
111 wizyt
pytanie zadane 29 stycznia 2020 w Python przez kingmajster Użytkownik (520 p.)

Cześć. Potrzebuje waszej pomocy. Mam 2 listy i chcę je porównać, a wynik zapisać do 3 listy. Wynikiem ma być lista obecności. Nie mogę sobie poradzić, ze stworzeniem pętli, która będzie się odwoływać do odpowiednich elementów listy. Proszę o pomoc.

pracownicy = [['001', 'Adam', 'Spadam'],
              ['002', 'Jan', 'Brat'],
              ['003', 'Marek', 'Sucharek'],
              ['004', 'Jarek', 'Barek'],
              ['005', 'Mirek', 'Wampirek']]


obecni = ['001', '004', '005', '008']


lista_obecnosci = []


for i in obecni:
        if i in pracownicy[][0]:
            lista_obecnosci.append([pracownicy[][1], pracownicy[][2]])
        else:
            lista_obecnosci.append([pracownicy[][0], '-niezidentyfikowany'])


plik = open('plik.txt', 'w')
plik.writelines(lista_obecnosci)
plik.close()

 

1 odpowiedź

+1 głos
odpowiedź 29 stycznia 2020 przez tangarr Mędrzec (154,860 p.)

Proponuję użyć słownika do przechowywania pracowników. https://docs.python.org/2/tutorial/datastructures.html#dictionaries

pracownicy = {'001': ['Adam', 'Spadam'],
              '002': ['Jan', 'Brat'],
              '003': ['Marek', 'Sucharek'],
              '004': ['Jarek', 'Barek'],
              '005': ['Mirek', 'Wampirek']}
 
 
obecni = ['001', '004', '005', '008']
 
lista_obecnosci = []

for id in obecni:
  if id not in pracownicy:
    continue
  pracownik = pracownicy[id]
  lista_obecnosci.append(pracownik)

 

komentarz 30 stycznia 2020 przez kingmajster Użytkownik (520 p.)

Dzięki, działa! Ale to tworzy mi problem we wcześniejszej części programu, otóż ta lista z pracownikami pobierana była z pliku tekstowego. Da się to przerobić, żeby działało do słownika?

pracownicy = []

text_file = open("baza_pracownikow.txt", "r")
for line in text_file:
        line = line.replace("\n", "")
        line = line.replace("\r", "")
        pracownicy.append(line.split(" "))
text_file.close()

Plik tekstowy z bazą pracowników ma taki układ:

001 Adam Spadam
002 Jan Brat
003 Marek Sucharek

 

 

komentarz 30 stycznia 2020 przez tangarr Mędrzec (154,860 p.)

Tak naprawdę to nie znam się na pythonie.
Myślę że coś takiego by dało radę:

pracownicy = {}
 
text_file = open("baza_pracownikow.txt", "r")
for line in text_file:
        line = line.replace("\n", "")
        line = line.replace("\r", "")
        dane = line.split(" ")
        id = dane.pop(0)
        pracownicy[id] = dane
text_file.close()

Źródła z których korzystałem:
https://stackoverflow.com/questions/4426663/how-to-remove-the-first-item-from-a-list
https://www.journaldev.com/23232/python-add-to-dictionary

komentarz 31 stycznia 2020 przez kingmajster Użytkownik (520 p.)

Tak, tego potrzebowałem. Działa świetnie! smiley

Podobne pytania

0 głosów
2 odpowiedzi 2,043 wizyt
+1 głos
1 odpowiedź 741 wizyt
pytanie zadane 2 października 2021 w Python przez jakubjordanek Obywatel (1,320 p.)
0 głosów
1 odpowiedź 154 wizyt
pytanie zadane 8 czerwca 2021 w Python przez KerivePL Początkujący (310 p.)

92,615 zapytań

141,465 odpowiedzi

319,782 komentarzy

61,997 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...