Woche 05#

person_hobbies = { "Tina": [ "Tanzen", "Schwimmen" ],
                   "Tom":  [ "Tanzen", "Lesen" ] }
person_hobbies["Tina"]
['Tanzen', 'Schwimmen']

Zielvorstellung:

hobby_personen = { "Tanzen": [ "Tina", "Tom"],
                   "Schwimmen" : [ "Tina" ],
                   "Lesen": [ "Tom" ] }

Welche Hobbies gibt es?#

Grundstruktur Listenbearbeitung#

ah = [] ## ah ... alle Hobbies

for person, hob_liste in person_hobbies.items():
    print( f"{person}: {hob_liste}" )
    ah.extend(hob_liste)

ah
Tina: ['Tanzen', 'Schwimmen']
Tom: ['Tanzen', 'Lesen']
['Tanzen', 'Schwimmen', 'Tanzen', 'Lesen']
set(ah)
{'Lesen', 'Schwimmen', 'Tanzen'}

mit Sets#

ahs = set() # alle hobbies set

for person, hob_liste in person_hobbies.items():
    print( f"{person}: {hob_liste}, set: {set(hob_liste)}" )
    ahs = ahs.union( set(hob_liste) )
ahs
Tina: ['Tanzen', 'Schwimmen'], set: {'Tanzen', 'Schwimmen'}
Tom: ['Tanzen', 'Lesen'], set: {'Lesen', 'Tanzen'}
{'Lesen', 'Schwimmen', 'Tanzen'}

Initialisierung eines Ergebnis-Dicts#

hp= {}  # hp: hobbie - personen dict

for h in ahs:
    hp[h] = []

hp
{'Lesen': [], 'Tanzen': [], 'Schwimmen': []}
for person, hob_liste in person_hobbies.items():
    print( f"{person}: {hob_liste}")
    for h in hob_liste:
        print(f"  {h}")
        hp[h].append(person)
hp
Tina: ['Tanzen', 'Schwimmen']
  Tanzen
  Schwimmen
Tom: ['Tanzen', 'Lesen']
  Tanzen
  Lesen
{'Lesen': ['Tom'], 'Tanzen': ['Tina', 'Tom'], 'Schwimmen': ['Tina']}

integrierte Lösung#

hp2 = {}
for person, hob_liste in person_hobbies.items():
    print( f"{person}: {hob_liste}")
    for h in hob_liste:
        print(f"  {h}")
        if h not in hp2:
            hp2[h] = []
        hp2[h].append(person)
hp2
Tina: ['Tanzen', 'Schwimmen']
  Tanzen
  Schwimmen
Tom: ['Tanzen', 'Lesen']
  Tanzen
  Lesen
{'Tanzen': ['Tina', 'Tom'], 'Schwimmen': ['Tina'], 'Lesen': ['Tom']}

Klausuraufgabe#

person_geburtstage = { "Tina": "2001-12-13",
                "Tom": "2000-12-01" }
g_monat_person ={}

for person, gb in person_geburtstage.items():
    jahr = gb[0:4]
    monat = gb[5:7]
    tag = gb[8:]
    print(  f"{person=}, {gb=}, Jahr: {jahr=}, {monat=}, {tag=}")
    if monat not in g_monat_person:
        g_monat_person[monat] = []
    g_monat_person[monat].append(person)
    
person='Tina', gb='2001-12-13', Jahr: jahr='2001', monat='12', tag='13'
person='Tom', gb='2000-12-01', Jahr: jahr='2000', monat='12', tag='01'
g_monat_person
{'12': ['Tina', 'Tom']}

Strings#

hw = """Hallo    Welt!

Wie    geht   es        Dir?"""
hw
'Hallo    Welt!\n\nWie    geht   es        Dir?'
hw[0:5]
'Hallo'
hws = hw.split()
hws
['Hallo', 'Welt!', 'Wie', 'geht', 'es', 'Dir?']
hws
['Hallo', 'Welt!', 'Wie', 'geht', 'es', 'Dir?']
"_".join(  hws  ) 
'Hallo_Welt!_Wie_geht_es_Dir?'
# FALSCH
#join(hws, " ")
filepath = "/home/busse/Hallo Welt 2025-11-06.txt"
fp2 = "_".join(   filepath.split()           )
fp2
'/home/busse/Hallo_Welt_2025-11-06.txt'
datums = { "2025-11-06": [ "Frühstück", "Pthon 101"] }
list(datums.keys())[0]
'2025-11-06'
d = "2025-11-06"
d
'2025-11-06'
d.split("-")
['2025', '11', '06']
datums2 = {  ('2025', '11', '06') : [ "Frühstück", "Pthon 101"],}
# gegeben
eingabe = { "2025-11-06-LA": [ "Frühstück", "Pthon 101"],
          "2025-12-24-M": [ "Bruder sehen", "Oma besuchen" ] }

# gesucht
ergebnis = {}

for k,v in eingabe.items():
    print(  f"{k=}, {v=}")
    k_neu = tuple( k.split("-") )
    ergebnis[k_neu] = v

ergebnis
k='2025-11-06-LA', v=['Frühstück', 'Pthon 101']
k='2025-12-24-M', v=['Bruder sehen', 'Oma besuchen']
{('2025', '11', '06', 'LA'): ['Frühstück', 'Pthon 101'],
 ('2025', '12', '24', 'M'): ['Bruder sehen', 'Oma besuchen']}
# das geht auch nicht
#d3 = { { "jahr": 2025, "monat": 11, "Tag": 6}    : [ "Frühstück", "Pthon 101"],
#          "2025-12-24-M": [ "Bruder sehen", "Oma besuchen" ] }
datei = """
Name: jbusse@jbusse.de
cc: max.mustermann@web.de
---

Hallo Max,

sehen wir uns heute?

---
Signatur,
Ort
Straße
"""
datei.split("---", 1)
['\nName: jbusse@jbusse.de\ncc: max.mustermann@web.de\n',
 '\n\nHallo Max,\n\nsehen wir uns heute?\n\n---\nSignatur,\nOrt\nStraße\n']
kopf, body = datei.split("---", 1)
kopf
'\nName: jbusse@jbusse.de\ncc: max.mustermann@web.de\n'
body
'\n\nHallo Max,\n\nsehen wir uns heute?\n\n---\nSignatur,\nOrt\nStraße\n'
a, b = [   "Hallo", "Welt" ]
a
'Hallo'
ottos_mops = """ottos mops trotzt
otto: fort mops fort
ottos mops hopst fort"""
zeilen = ottos_mops.splitlines()
zeilen
['ottos mops trotzt', 'otto: fort mops fort', 'ottos mops hopst fort']
# eingabe: zeilen

# ergebnis
ergebnis = []

for zeile in zeilen:
    ergebnis.append(  zeile.split() )

ergebnis
[['ottos', 'mops', 'trotzt'],
 ['otto:', 'fort', 'mops', 'fort'],
 ['ottos', 'mops', 'hopst', 'fort']]
nato = """A 	Alfa 	[ˈalfa]
B 	Bravo 	[ˈbravo]
C 	Charlie 	[ˈtʃali]
"""

"""
D 	Delta 	[ˈdɛlta]
E 	Echo 	[ˈɛko]
F 	Foxtrot 	[ˈfɔkstrɔt]
G 	Golf 	[ˈɡɔlf]
H 	Hotel 	[hoˈtɛl]
I 	India 	[ˈɪndia]
J 	Juliett 	[ˈdʒuliˈɛt]
K 	Kilo 	[ˈkilo]
L 	Lima 	[ˈlima]
M 	Mike 	[ˈmai̯k]
N 	November 	[noˈvɛmba]
O 	Oscar 	[ˈɔska]
P 	Papa 	[paˈpa]
Q 	Quebec 	[keˈbɛk]
R 	Romeo 	[ˈromio]
S 	Sierra 	[siˈɛra]
T 	Tango 	[ˈtaŋɡo]
U 	Uniform 	[ˈjunifɔm]
V 	Victor 	[ˈvɪkta]
W 	Whiskey 	[ˈwɪski]
X 	X-ray 	[ˈɛksrei̯]
Y 	Yankee 	[ˈjaŋki]
Z 	Zulu 	[ˈzulu]
"""
'\nD \tDelta \t[ˈdɛlta]\nE \tEcho \t[ˈɛko]\nF \tFoxtrot \t[ˈfɔkstrɔt]\nG \tGolf \t[ˈɡɔlf]\nH \tHotel \t[hoˈtɛl]\nI \tIndia \t[ˈɪndia]\nJ \tJuliett \t[ˈdʒuliˈɛt]\nK \tKilo \t[ˈkilo]\nL \tLima \t[ˈlima]\nM \tMike \t[ˈmai̯k]\nN \tNovember \t[noˈvɛmba]\nO \tOscar \t[ˈɔska]\nP \tPapa \t[paˈpa]\nQ \tQuebec \t[keˈbɛk]\nR \tRomeo \t[ˈromio]\nS \tSierra \t[siˈɛra]\nT \tTango \t[ˈtaŋɡo]\nU \tUniform \t[ˈjunifɔm]\nV \tVictor \t[ˈvɪkta]\nW \tWhiskey \t[ˈwɪski]\nX \tX-ray \t[ˈɛksrei̯]\nY \tYankee \t[ˈjaŋki]\nZ \tZulu \t[ˈzulu]\n'
aussprache = { "A": "Alfa",
              "B": "Bravo" }
zeilen = nato.splitlines()
zeilen
['A \tAlfa \t[ˈalfa]', 'B \tBravo \t[ˈbravo]', 'C \tCharlie \t[ˈtʃali]']
'A \tAlfa \t[ˈalfa]'.split()
['A', 'Alfa', '[ˈalfa]']
aussprache = {}

for zeile in nato.splitlines():
    teile = zeile.split()
    print(teile)
    k = teile[0]
    v = teile[1]
    aussprache[k] = v

aussprache
['A', 'Alfa', '[ˈalfa]']
['B', 'Bravo', '[ˈbravo]']
['C', 'Charlie', '[ˈtʃali]']
{'A': 'Alfa', 'B': 'Bravo', 'C': 'Charlie'}
aussprache = {}

for zeile in nato.splitlines():
    teile = zeile.split(maxsplit=1)
    print(teile)
    k = teile[0]
    v = teile[1].split()
    aussprache[k] = v

aussprache
['A', 'Alfa \t[ˈalfa]']
['B', 'Bravo \t[ˈbravo]']
['C', 'Charlie \t[ˈtʃali]']
{'A': ['Alfa', '[ˈalfa]'],
 'B': ['Bravo', '[ˈbravo]'],
 'C': ['Charlie', '[ˈtʃali]']}
aussprache_liste = []
aussprache_dict = {}

for x in nato.splitlines():
    teile = x.split()
    #print(f"""{x},\n   {teile}""")
    aussprache_liste.append( teile )

    k = teile[0]
    v = teile[1]
    aussprache_dict[k] =  v
    
aussprache_liste
[['A', 'Alfa', '[ˈalfa]'],
 ['B', 'Bravo', '[ˈbravo]'],
 ['C', 'Charlie', '[ˈtʃali]']]
aussprache_dict
{'A': 'Alfa', 'B': 'Bravo', 'C': 'Charlie'}