发现一个值内有多少个列表

时间:2019-06-03 21:14:37

标签: python-3.x dictionary key-value-store

my_dict = {"fruits": ["apple", "orange", "grape", "maracuya", "pineapple"],
           "countries": [["India", "China", "Brazil", "Lesotho", "Nepal"], 
                         ["Spain", "Italy", "Japan", "Indonesia", "Russia"], 
                         ["Germany", "Austria", "Paraguay", "New Zealand", "Peru"],
                         ["Australia", "Colombia", "Belice", "Swaziland"]],
           "colors": [["blue", "black", "green", "yellow", "red"],
                      ["purple", "pink", "white", "lila"]]}

有没有办法知道每个键下有多少个列表?例如:在“水果”键下我只有一个,在“国家”键下我只有四个

我尝试过的主要是:

for key, values in my_dict.items():
    print(len(values))

不起作用

for key in my_dict.values():
   print(len(key))

也失败了

3 个答案:

答案 0 :(得分:1)

一种方法,尽管感觉不是很Python,但是只是循环遍历这些值,如果值是列表,则测试列表中的每个项目以查看 it 是否为列表,保留以下内容:

for key, value in my_dict.items():
    count = 0
    if isinstance(value, list):
        for val in value:
            if isinstance(val, list):
                count += 1
        print(f'{key} has {count} lists')

打印:

fruits has 0 list
countries has 4 lists
colors has 2 lists

答案 1 :(得分:1)

我的第一个问题是,如果您也想将水果列表也放入另一个列表中。然后,所有情况的结构都相同,解决方案很简单:

{key: len(value) for key, value in my_dict.items()}

否则,如果您要坚持发布的数据结构,则可以执行以下操作:

{key: len(value) if isinstance(value[0], list) else 1 for key, value in my_dict.items()}

这将导致:

{'colors': 2, 'countries': 4, 'fruits': 1}

我必须承认这种解决方案有很多假设。如果您想在任何地方找到所有列表,那将使其变得更加复杂。

答案 2 :(得分:0)

非常感谢编码诗人,您的答案是最合适的

也感谢所有了解我的问题并尝试提供帮助的人:-)