簡體   English   中英

返回具有列表列表中最常見元素的元組

[英]Return a tuple with the most common elements from list of lists

我有一個清單:

list = [{"maamaks kaotada", "pensione tõsta", "kaitsekulutusi tõsta"},
        {"lasteaiaõpetajate palku tõsta", "kindlustada tasuta hambaravi kuni 30-aastastele"},
        {"sisserännet piirata", "pensione tõsta", "kaitsekulutusi tõsta"},
        set()]

我需要創建一個具有最常見元素的tuple (在這種情況下為(0,2))。 list索引為0和list與索引2具有最常見的元素,因此元組必須是(0,2)。 我怎樣才能做到這一點?

您已經創建了列表:

>>> my_list = [{"maamaks kaotada", "pensione tõsta", "kaitsekulutusi tõsta"},
...         {"lasteaiaõpetajate palku tõsta", "kindlustada tasuta hambaravi kuni 30-aastastele"},
...         {"sisserännet piirata", "pensione tõsta", "kaitsekulutusi tõsta"},
...         set()]

之后,第一步將是計算每個字符串的出現次數:

>>> counts = {}
>>> for dict in myList:
...     for key in dict:
...         counts[key] = counts.get(key,0) + 1
...
>>> counts
{'pensione tõsta': 2, 'maamaks kaotada': 1, 'kindlustada tasuta hambaravi kuni 30-aastastele': 1, 'kaitsekulutusi tõsta': 2, 'sisserännet piirata': 1, 'lasteaiaõpetajate palku tõsta': 1}

現在,您可以找到最常出現的商品的數量:

>>> frequent_count = max([counts[i] for i in counts])
>>> frequent_count
2

並生成最常使用的商品的列表:

>>> frequent = []
>>> for key in counts:
...     if counts[key] == max([counts[i] for i in counts]):
...         frequent += [key]
...
>>> frequent
['pensione tõsta', 'kaitsekulutusi tõsta']

最后獲得包含您最常使用的字符串的集合的列表:

>>> final_list = []
>>> for i in ,y_list:
...     if any(item in i for item in frequent):
...         final_list += [i]
...
>>> tuple(final_list)
({'pensione tõsta', 'maamaks kaotada', 'kaitsekulutusi tõsta'}, {'pensione tõsta', 'kaitsekulutusi tõsta', 'sisserännet piirata'})

或者如果您想要索引:

>>> final_list = []
>>> for i in range(len(my_list)):
...     if any(item in my_list[i] for item in frequent):
...         final_list += [i]
...
>>> tuple(final_list)
(0, 2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM