I have a list of dictionary looks like this.
JavaScript
x
2
1
charts = [[{'select': 'scatter-form'}], [{'select': 'line-form'}]]
2
I want to get the list by the value of 'select'
key.
For example:
JavaScript
1
3
1
scatterform = [{'select': 'scatter-form'}]
2
lineform = [{'select': 'line-form'}]
3
this one is not working because of some error list indices must be integers or slices, not str
Advertisement
Answer
New answer:
Since the original post is edited, I updated my answer.
First, If you certain that the ‘select’ value is unique and not missing,
JavaScript
1
12
12
1
charts = [[{'select': 'scatter-form'}], [{'select': 'line-form'}]]
2
3
scatterform = None
4
lineform = None
5
for chart in charts:
6
if chart[0]['select'] == 'scatter-form':
7
scatterform = chart
8
elif chart[0]['select'] == 'line-form':
9
lineform = chart
10
assert scatterform is not None
11
assert lineform is not None
12
will work. or, if there could be many same ‘select’ values or could be none, you can do following:
JavaScript
1
6
1
charts = [[{'select': 'scatter-form'}], [{'select': 'line-form'}]]
2
3
scatterforms = [chart for chart in charts if chart[0]['select'] == 'scatter-form']
4
lineforms = [chart for chart in charts if chart[0]['select'] == 'line-form']
5
print(scatterforms, lineforms)
6
output:
JavaScript
1
2
1
[[{'select': 'scatter-form'}]] [[{'select': 'line-form'}]]
2
Old answer:
charts
is a nested list. You should iterate it.
JavaScript
1
9
1
charts = [[{'select': 'scatter-form'}], [{'select': 'line-form'}]]
2
3
4
for [chart] in charts:
5
if chart['select'] == "scatter-form":
6
print("scatter-form") or [{'select': 'scatter-form'}]
7
if chart['select'] == "line-form":
8
print("line-form") or [{'select': 'line-form'}]
9
output:
JavaScript
1
3
1
scatter-form
2
line-form
3
or
JavaScript
1
6
1
for chart in charts:
2
if chart[0]['select'] == "scatter-form":
3
print("scatter-form") or [{'select': 'scatter-form'}]
4
if chart[0]['select'] == "line-form":
5
print("line-form") or [{'select': 'line-form'}]
6