Dependent Selectbox with json nested file

Hey everyone, I hope someone can help me. I’m sitting since days on this task.
I have a Jsonfile. This json file is a dictionary and inside of this dict are lists with other dictionaries nested.
I have made two selectboxes where I get with the first one a list of all values from [“law”] inside the dicts. depending on which law I choose in my selectbox I get all the values of [“paragraphs”] that belongs to that dictonary. In the next step I wanna have printed out the [‘Text’] that belongs to the [‘Paragraph’]. Actually for me it seems exactly the same procedure like before, but I don’t get it. It would be so nice, If someone could help out! Thanks a lot!

This is how the Json looks like:

data= {
“data”: [
{
“id”: 0,
“law”: “UStG - Umsatzsteuergesetz”,
** “paragraph”: “§ 18k”,**
“text”: “UStG 1980 § 18k Besonderes Besteuerungsverfahren für Fernverkäufe von aus dem Drittlandsgebiet eingeführten Gegenständen in Sendungen mit einem Sachwert von höchstens 150 Euro\n(1) Ein Unternehmer, der nach dem 30. Jun .\n”,
“entities”: [
{
“start”: 345,
“end”: 354,
“value”: “Wertebereich”,
“entity”: “Wertebereich”,
“text”: “höchstens”
},
{
“start”: 355,
“end”: 358,
“value”: “Wert”,
“entity”: “Wert”,
“text”: “150”
},
{
“start”: 359,
“end”: 363,
“value”: “Einheit”,
“entity”: “Einheit”,
“text”: “Euro”
},
{
“start”: 589,
“end”: 703,
“value”: “Kennzahl”,
“entity”: “Kennzahl”,
“text”: “besonderen Besteuerungsverfahren entsprechend Titel XII Kapitel 6 Abschnitt 4 der Richtlinie 2006/112/EG des Rates”
}
]
},
{
“id”: 1,
“law”: “EStG - Einkommensteuergesetz”,
“paragraph”: “§ 110”,
“text”: “EStG § 110 Anpassung von Vorauszahlungen für den Veranlagungszeitraum 2019\n(1) .\n”,
“entities”: [
{
“start”: 11,
“end”: 74,
“value”: “Kennzahlumschreibung”,
“entity”: “Kennzahlumschreibung”,
“text”: “Anpassung von Vorauszahlungen für den Veranlagungszeitraum 2019”
},
{
“start”: 892,
“end”: 902,
“value”: “Wert”,
“entity”: “Wert”,
“text”: “10 000 000”
},
{
“start”: 903,
“end”: 907,
“value”: “Einheit”,
“entity”: “Einheit”,
“text”: “Euro”
},
{
“start”: 977,
“end”: 987,
“value”: “Wert”,
“entity”: “Wert”,
“text”: “20 000 000”
},
{
“start”: 988,
“end”: 992,
“value”: “Einheit”,
“entity”: “Einheit”,
“text”: “Euro”
},
{
“start”: 993,
“end”: 1012,
“value”: “Wertebereich”,
“entity”: “Wertebereich”,
“text”: “nicht überschreiten”
}
]
},
{
“id”: 4,
“law”: “UStG - Umsatzsteuergesetz”,
“paragraph”: “§ 18”,
“text”: “UStG 1980 § 18 Besteuerungsverfahren\n(1) n den für die.\n”,
“entities”: [
{
“start”: 904,
“end”: 912,
“value”: “Wertebereich”,
“entity”: “Wertebereich”,
“text”: “mehr als”
},
{
“start”: 913,
“end”: 918,
“value”: “Wert”,
“entity”: “Wert”,
“text”: “7 500”
},
{
“start”: 919,
“end”: 923,
“value”: “Einheit”,
“entity”: “Einheit”,
“text”: “Euro”
},
{
“start”: 933,
“end”: 968,
“value”: “Kennzahl”,
“entity”: “Kennzahl”,
“text”: “Kalendermonat Voranmeldungszeitraum”
},
{
“start”: 1025,
“end”: 1039,
“value”: “Wertebereich”,
“entity”: “Wertebereich”,
“text”: “nicht mehr als”
},
{
“start”: 1040,
“end”: 1045,
“value”: “Wert”,
“entity”: “Wert”,
“text”: “1 000”
},
{
“start”: 1046,
“end”: 1050,
“value”: “Einheit”,
“entity”: “Einheit”,
“text”: “Euro”
},
{
“start”: 1061,
“end”: 1183,
“value”: “Kennzahl”,
“entity”: “Kennzahl”,
“text”: “Finanzamt den Unternehmer von der Verpflichtung zur Abgabe der Voranmeldungen und Entrichtung der Vorauszahlungen befreien”
},
{
“start”: 2579,
“end”: 2686,
“value”: “Kennzahl”,
“entity”: “Kennzahl”,
“text”: “Der Unternehmer kann an Stelle des Kalendervierteljahres den Kalendermonat als Voranmeldungszeitraum wählen”
},
{
“start”: 2771,
“end”: 2779,
“value”: “Wertebereich”,
“entity”: “Wertebereich”,
“text”: “mehr als”
},
{
“start”: 2780,
“end”: 2785,
“value”: “Wert”,
“entity”: “Wert”,
“text”: “7 500”
},
{
“start”: 2786,
“end”: 2790,
“value”: “Einheit”,
“entity”: “Einheit”,
“text”: “Euro”
},
{
“start”: 14410,
“end”: 14414,
“value”: “Wert”,
“entity”: “Wert”,
“text”: “2,50”
},
{
“start”: 14415,
“end”: 14419,
“value”: “Einheit”,
“entity”: “Einheit”,
“text”: “Euro”
}
]
},
{
“id”: 5,
“law”: “StromStG - Stromsteuergesetz”,
“paragraph”: “§ 3”,
“text”: “StromStG § 3 Steuertarif\nDie Steuer beträgt 20,50 Euro für eine Megawattstunde.\n”,
“entities”: [
{
“start”: 13,
“end”: 24,
“value”: “Kennzahl”,
“entity”: “Kennzahl”,
“text”: “Steuertarif”
},
{
“start”: 44,
“end”: 49,
“value”: “Wert”,
“entity”: “Wert”,
“text”: “20,50”
},
{
“start”: 50,
“end”: 54,
“value”: “Einheit”,
“entity”: “Einheit”,
“text”: “Euro”
},
{
“start”: 55,
“end”: 78,
“value”: “Faktor”,
“entity”: “Faktor”,
“text”: “für eine Megawattstunde”
}
]
},

{
“id”: 4,
“law”: “UStG - Umsatzsteuergesetz”,
“paragraph”: “§ 18”,
“text”: “UStG 1980 § 18 Besteuerungsverfahren\n(1) .\n”,
“entities”: [
{
“start”: 904,
“end”: 912,
“value”: “Wertebereich”,
“entity”: “Wertebereich”,
“text”: “mehr als”
},
{
“start”: 913,
“end”: 918,
“value”: “Wert”,
“entity”: “Wert”,
“text”: “7 500”
},
{
“start”: 919,
“end”: 923,
“value”: “Einheit”,
“entity”: “Einheit”,
“text”: “Euro”
},
{
“start”: 933,
“end”: 968,
“value”: “Kennzahl”,
“entity”: “Kennzahl”,
“text”: “Kalendermonat Voranmeldungszeitraum”
},
{
“start”: 1025,
“end”: 1039,
“value”: “Wertebereich”,
“entity”: “Wertebereich”,
“text”: “nicht mehr als”
},
{
“start”: 1040,
“end”: 1045,
“value”: “Wert”,
“entity”: “Wert”,
“text”: “1 000”
},
{
“start”: 1046,
“end”: 1050,
“value”: “Einheit”,
“entity”: “Einheit”,
“text”: “Euro”
},
{
“start”: 1061,
“end”: 1183,
“value”: “Kennzahl”,
“entity”: “Kennzahl”,
“text”: “Finanzamt den Unternehmer von der Verpflichtung zur Abgabe der Voranmeldungen und Entrichtung der Vorauszahlungen befreien”
},
{
“start”: 2579,
“end”: 2686,
“value”: “Kennzahl”,
“entity”: “Kennzahl”,
“text”: “Der Unternehmer kann an Stelle des Kalendervierteljahres den Kalendermonat als Voranmeldungszeitraum wählen”
},
{
“start”: 2771,
“end”: 2779,
“value”: “Wertebereich”,
“entity”: “Wertebereich”,
“text”: “mehr als”
},
{
“start”: 2780,
“end”: 2785,
“value”: “Wert”,
“entity”: “Wert”,
“text”: “7 500”
},
{
“start”: 2786,
“end”: 2790,
“value”: “Einheit”,
“entity”: “Einheit”,
“text”: “Euro”
},
{
“start”: 14410,
“end”: 14414,
“value”: “Wert”,
“entity”: “Wert”,
“text”: “2,50”
},
{
“start”: 14415,
“end”: 14419,
“value”: “Einheit”,
“entity”: “Einheit”,
“text”: “Euro”
}
]
}
]
}

This is my code:

#selectbox with list of laws
value = st.selectbox(“Wähle ein Gesetz”, ner_texts)

#get the list of paragraphs
ner_texts_para=
for item in data_js[‘data’]:
if item[‘law’] == value:
ner_texts_para.append(item[‘paragraph’])

#selectbox of paragraphs that belongs to the choosed Law
options= list(range(len(ner_texts_para)))
value_1 = st.selectbox(“Wähle einen Paragraphen”,options, format_func=lambda x:ner_texts_para)

And now I’m struggling because I get no result the next step where I wanna have printed out the ['text’] of choosed paragraph.

#text of choosed paragraph

predict_paragraph =
for item in data_js[‘data’]:
if item[‘paragraph’] == value_1:
predict_paragraph.append(item[‘text’])
st.write(predict_paragraph)

I got the solution, finally! No more help needed :slight_smile:
The error layed in the selectbox function:

This works:

###Get Paragraphs
ner_texts_para=
for item in data_js[‘data’]:
if item[‘law’] == value:
ner_texts_para.append(item[‘paragraph’])
#st.write(ner_texts)

options= list(ner_texts_para)
value_1 = st.selectbox(“Wähle einen Paragraphen”,options)

predict_paragraph =
for item in data_js[‘data’]:
if item[‘paragraph’] == value_1:
#st.write(value_1)
predict_paragraph.append(item[‘text’])
st.write(predict_paragraph)

1 Like