(engl. hash table od. hash map)
Eine Hashfunktion muss bestimmt werden, die unsere Daten in den Bereich
Daten können dann in den so bestimmten Slot eingefügt werden
z.B.
Es lässt sich jetzt auch ein Füllfaktor
Anwendungsfall: Wir können speichern ob ein Element in einer Liste vorhanden ist oder nicht
my_hash_functions.py
def my_hash_fun(item, m):
#use modulo as rudimentary hash function
return item % m
a_list = [1, 16, 8, 4, 25, 94, 46]
print([my_hash_fun(x, 11) for x in a_list])
# [1, 5, 8, 4, 3, 6, 2]
def my_str_hash_fun(a_str, m):
#ord(...) returns the unicode value of a character
return sum([ord(x) * (i + 1) for i, x in enumerate(a_str)]) % m
a_string = "Hello World!"
print(my_str_hash_fun(a_string, 11)) #> 1
Suche in unserer Hash-Tabelle jetzt durch Anwenden der Hashfunktion auf die Daten und überprüfen, ob der Slot ein Element enthält →
→ Wir suchen den Wert 46 →
Was würde aber passieren, wenn wir noch das Element 70
in die Hash-Tabelle einfügen wollen?
4
→ keine eindeutige Zuweisung mehr möglichTupel
aus einer Bezeichnung und einem dazugehörigen Wert speichern* Ganz strikt betrachtet ist das assoziative Array der abstrakte Datentyp & die Hash-Tabelle eine mögliche Implementierung.
dict
) ein assoziatives Array abdictionary_example.ipynb
my_dict = {
"key1": "value1",
"key2": 2,
3: ("value", 3),
}
print(f"{my_dict["key1"]} | {my_dict["key2"]} | {my_dict[3]}")
# value1 | 2 | ("value", 3)
**kwargs
in Pythondict
übergebenBildquelle: [Althoff 2021]
reverse_complement(dna_sequence)
mit den beiden Listen so, dass Sie ein Dictionary verwendenreverse_complement.py
def reverse_complement_with_dict(dna_sequence):
complement_dict = {'A': 'T',
'T': 'A',
'G': 'C',
'C': 'G'}
reverse_comp_sequence = []
for nucleotide in dna_sequence:
if nucleotide in complement_dict:
reverse_comp_sequence.append(complement_dict[nucleotide])
else:
# In case of non-standard characters
reverse_comp_sequence.append("_")
reverse_comp_sequence.reverse()
return "".join(reverse_comp_sequence)
import unittest
from reverse_complement import reverse_complement_with_dict
class TestReverseComplement(unittest.TestCase):
def test_reverse_complement(self):
dna_sequence = "ATGATCTCGTAA"
reverse_complement_sequence = reverse_complement_with_dict(dna_sequence)
self.assertEqual(reverse_complement_sequence, "TTACGAGATCAT")
dictionary_example.ipynb
erweiternsensor_with_calibration.ipynb
datetime
__lt__
(less than) implementieren um unsere Sensoren vergleichen zu könnenjson
-Package um unseren Sensor zu serialisieren und als JSON-Datei zu speichern@startuml start :Start; partition "Initialization" { :complement_dict = {'A': 'T', 'T': 'A', 'G': 'C', 'C': 'G'}; :reverse_comp_sequence = []; } while (nucleotide left in dna_sequence) is (true) :nucleotide = Get next nucleotide; if (nucleotide is in complement_dict) then (Yes) :replacement = Get replacement from complement_dict using nucleotide; :Add replacement to reverse_comp_sequence; else (No) :Add nucleotide to reverse_comp_sequence; endif endwhile (false) :Reverse reverse_comp_sequence; :return Concatenate reverse_comp_sequence as string; @enduml