0

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

   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])

但我要感谢列表理解打印类似下面的内容,并且仅使用一个用于内联:

'digits', 10 ; 'letters', 3
4

7 回答 7

1

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

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

输出

[('digits', 10), ('letters', 3)]
于 2013-11-14T06:16:23.810 回答
1

一些更具可读性的东西怎么样?

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

letters: 3
digits: 10
于 2013-11-14T06:20:49.710 回答
1
> print {k:len(v) for k,v in count.items()}
{'digits': 10, 'letters': 3}

此外,[k for k,v in count.items()]只是count.keys().

于 2013-11-14T06:21:11.010 回答
1
>>> 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
于 2013-11-14T06:29:20.460 回答
0

是的,只能使用一个 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;

希望这可以帮助 :)

于 2013-11-14T06:22:20.177 回答
0

没有 for 循环

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

或者如果你满意['digits: 10', 'letters: 3'],就

list(map("{}: {}".format, count, map(len, count.values())))
于 2013-11-14T06:33:27.090 回答
0

怎么样

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

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

于 2013-11-14T06:20:15.493 回答