【问题标题】:Python print len() of list being value of dictionary using list comprehension for loopsPython print len() of list is value of dictionary using list comprehension for loops
【发布时间】:2013-11-14 06:15:18
【问题描述】:

到目前为止,我已经做过类似的事情:

   count={'letters':['a','b','c'],'digits':[1,2,3,4,5,6,7,8,9,0]}

    print ([k for k,v in count.items()],[len(v) for k,v in count.items()])

打印什么

(['digits', 'letters'], [10, 3])

但我要感谢 list comprehension 打印类似下面的内容并使用 only one for inline:

'digits', 10 ; 'letters', 3

【问题讨论】:

    标签: python list dictionary inline


    【解决方案1】:

    你可以简单地用一个for这样的循环来做到这一点

    print [(k, len(v)) for k, v in count.items()]
    

    输出

    [('digits', 10), ('letters', 3)]
    

    【讨论】:

    • 好的。它会打印我想要的东西,但是是否可以用一个 for 来管理?
    • @andi 现在请检查我的答案,它给了你一个简单的方法:)
    【解决方案2】:

    让一些更易读的东西怎么样?

    for k, v in count.items():
        print('{}: {}'.format(k, len(v)))
    
    letters: 3
    digits: 10
    

    【讨论】:

    • 我认为它不是内联的。
    【解决方案3】:
    > print {k:len(v) for k,v in count.items()}
    {'digits': 10, 'letters': 3}
    

    另外,[k for k,v in count.items()] 就是 count.keys()

    【讨论】:

      【解决方案4】:
      >>> count={'letters':['a','b','c'],'digits':[1,2,3,4,5,6,7,8,9,0]}
      >>> print (' ; '.join(item + ', ' + str(len(count[item])) for item in count))
      

      输出:

      letters, 3 ; digits, 10
      

      【讨论】:

        【解决方案5】:

        是的,只有一个 for 循环 andi 是可能的 :)

        这里是...

        代码:

        count={'letters':['a','b','c'],'digits':[1,2,3,4,5,6,7,8,9,0]}
        
        for (k,v) in count.items():
            print k +',' + str(len(v)) +';',
        

        输出:

        digits,10; letters,3;
        

        希望这会有所帮助:)

        【讨论】:

          【解决方案6】:

          没有for循环

          print("\n".join(map("{}: {}".format, count, map(len, count.values()))))
          

          或者如果您对['digits: 10', 'letters: 3'] 感到满意,就

          list(map("{}: {}".format, count, map(len, count.values())))
          

          【讨论】:

          • 无论如何我认为,我会留下来使用“列表理解”。你使用的大括号数量让我想起了 Java ;)
          【解决方案7】:

          怎么样

          print [(k, len(v)) for k, v in count.items()]
          

          产生[('digits', 10), ('letters', 3)]

          【讨论】:

          • print [(k, len(v) for k, v in count.items()] ^ SyntaxError: invalid syntax
          • 少了一个括号。固定。
          猜你喜欢
          • 2022-12-01
          • 1970-01-01
          • 2023-01-12
          • 1970-01-01
          • 1970-01-01
          • 2012-11-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-29
          相关资源
          最近更新 更多