我有两个列表和字典如下:
>>> 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)
。
任何建议都会有很大的帮助。
答案 0 :(得分:14)
dict.items()
是一个包含字典的所有键/值元组的列表,例如:
[(1, [1,2,3,4]), (2, [5,6,7])]
因此,如果您编写len(dict.items()[0])
,那么您要求该项目列表的第一个元组的长度。由于字典的元组总是2元组(对),因此长度为2
。如果你想要给定键的值的长度,那么写:
len(dict[key])
Aso:尽量不要使用标准类型的名称(如str
,dict
,set
等)作为变量名称。 Python没有抱怨,但它隐藏了类型名称,可能会导致意外行为。
答案 1 :(得分: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"顺便说一句,方法也几乎有用(但是相当不单声道)。您刚刚使用了错误的索引:
>>> 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
答案 2 :(得分: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}