7

我有两个列表和字典如下:

>>> var1=[1,2,3,4]
>>> var2=[5,6,7]
>>> dict={1:var1,2:var2}

我想从我的字典中找到可变元素的大小,即键值的长度。查找后help('dict'),我只能找到返回键数的函数,即dict.__len__()。我尝试了 Java 方法(希望它可以工作),len(dict.items()[0])但它评估为2.

我打算找到这个:
第一个键4
的值长度:第二个键的值长度:3

当列表是字典的一部分而不是单独的列表时,如果它们的长度是len(list).

任何建议都会有很大帮助。

4

3 回答 3

16

dict.items()是一个包含字典的所有键/值元组的列表,例如:

[(1, [1,2,3,4]), (2, [5,6,7])]

因此,如果您写len(dict.items()[0]),那么您会询问该项目列表的第一个元组的长度。由于字典的元组始终是 2 元组(对),因此您得到 length 2。如果您想要给定键的值的长度,请编写:

len(dict[key])

Aso:尽量不要使用标准类型的名称(如strdictset)作为变量名。Python 不会抱怨,但它会隐藏类型名称并可能导致意外行为。

于 2013-06-16T12:11:58.860 回答
2

您可以使用dict comprehension来做到这一点,例如:

>>> var1 = [1,2,3,4]
>>> var2 = [5,6,7]
>>> d = {1:var1, 2:var2}
>>> lengths = {key:len(value) for key,value in d.iteritems()}
>>> lengths
{1: 4, 2: 3}

顺便说一句,您的“Java”方法也几乎可以工作(但相当不合Python)。您只是使用了错误的索引:

>>> d.items()
[(1, [1, 2, 3, 4]), (2, [5, 6, 7])]
>>> d.items()[0]
(1, [1, 2, 3, 4])
>>> len(d.items()[0][1])
4
于 2013-06-16T11:53:38.270 回答
2
>>>for k,v in dict.iteritems():
   k,len(v)

答:-

(1, 4)
(2, 3)

或者

>>>var1=[1,2,3,4]
>>>var2=[5,6,7]
>>>dict={1:var1,2:var2}

答:-

>>>[len(v) for k,v in dict.iteritems()]
[4, 3]
于 2013-06-16T12:35:48.903 回答