'How to count the same strings in multiple list in a list
I have a dictionary variable, in which have to count the same strings in multiple list inside a list
example:
df = {"123":{"grade":[["DESC",'12hwe'],["age",28],["DESC",'jbwdjb'],["score",76]]}}
I want to count the number of lists with "DESC" inside the list( for the above example,the count of "DESC" is 2)
for i in range(df["123"]["grade"]):
print(count(df["123"]["grade"][i][0]=="DESC"))
Any suggestions would be much appriciated !
Solution 1:[1]
your example data has a tuple in it , and I assume that if it is regular array so you can count it like that
df = { "123": {"grade": [["DESC", "12hwe"], ["age", 28],["DESC", "jbwdjb"], ["score", 76]]}}
listOfList = df["123"]["grade"]
splash = [i == "DESC" for x in listOfList for i in x]
print(sum(splash))
Solution 2:[2]
Maybe not a very efficient solution but still leads to your desired output. I assumed it is just a simple case of counting the occurrence of DESC string:
import pandas as pd
from itertools import chain
import re
df = {"123":{"grade":[["DESC",'12hwe'],["age",28],["DESC",'jbwdjb'],["score",76]]}}
# First we flatten your nested dictionaries
df2 = pd.json_normalize(df)
# Then we create a list out of the resulting data frame
lst = list(chain.from_iterable(df2['123.grade']))
# Now we count the number of occurrence in the resulting list
len(re.findall('DESC', str(lst)))
2
Since I have recently started using Python I would appreciate any hint to improve this solution.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | gsahan |
| Solution 2 | Anoushiravan R |
