【问题标题】:How to count item values from dictionary in python using keyword如何使用关键字从python中的字典中计算项目值
【发布时间】:2019-08-05 15:36:35
【问题描述】:

我有一本格式如下的字典:

folders = {'Master folder': ['Training'], 'Child folder': ['Training videos', 'Training documents', 'Training workouts', 'Training practicals']}

我想计算如下预期的值,

count_of_masterfolder = 1
count_of_childfolder = 4

到目前为止,我做到了,

    co_master = folders.items['Master folder']
    co_child = folders.items['Child folder']
    print(co_master, co_child)

我得到这个错误:

    co = folders.items['Master folder']
TypeError: 'builtin_function_or_method' object is not subscriptable

我该怎么办?

【问题讨论】:

  • 这不是您索引字典的方式 - 只需使用 folders[key]items 是一个函数,它返回一个视图对象/字典中所有键值对的列表。
  • 这不会返回我的值,正如我在预期部分中所说,我需要将每个计数值存储在单独的变量中并打印

标签: python dictionary


【解决方案1】:

您的意思是您希望count_of_masterfolder = 1 等作为程序的输出,还是希望将计数分配给变量?

在前一种情况下,您可以使用如下内容:

for key, value in folder.items():
    print ("count of", key, "=", len(value))

在后一种情况下,以下将适用于您的特定情况:

count_of_masterfolder = len(folder["Master folder"])
count_of_childfolder = len(folder["Child folder"])

【讨论】:

    【解决方案2】:

    你可以试试dict理解:

    {k: len(v) for k,v in folders.items()}
    

    完整示例:

    folders = {'Master folder': ['Training'], 'Child folder': [
        'Training videos', 'Training documents', 'Training workouts', 'Training practicals']}
    
    print({k: len(v) for k,v in folders.items()})
    # {'Master folder': 1, 'Child folder': 4}
    

    【讨论】:

    • 正确,但我需要将每个项目的计数存储到单独的变量中。这可能吗?
    • 动态创建变量是一种不好的做法,因为它很难理解、调试、维护和引入安全问题。一本字典回答了你的问题。你可以看看evalexecSome readings why they are bad practise.
    【解决方案3】:

    为什么需要复杂性,当你可以只使用len 函数来解决它时

    count_of_masterfolder = len(folders['Master folder'])
    count_of_childfolder = len(folders['Child folder'])
    

    【讨论】:

      【解决方案4】:
      folders = {'Master folder': ['Training'], 'Child folder': ['Training videos', 'Training documents', 'Training workouts', 'Training practicals']}
      
      for key in list(folders.keys()):
        print(key, len(folders[key]))
      
      >>>> Master folder 1
      >>>>Child folder 4
      
      EDIT: (to store outputs in list)
      
      ''''
      mylist = []
      for key in list(folders.keys()):
        print(key, len(folders[key]))
        mylist.extend(len(folders[key]))
      
      

      【讨论】:

      • 正确!但我需要将每个计数存储在单独的变量中
      猜你喜欢
      • 2021-11-15
      • 2015-02-21
      • 2022-11-22
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 2019-09-28
      • 2018-02-15
      • 2018-04-02
      相关资源
      最近更新 更多