在Python中获取字典的长度
Python中的字典是键值对数据的集合。这些用于Python中的许多操作,并且是Python中最重要的数据结构之一。为了计算字典的长度,使用了内置的len()
方法。
Python中的 len() 方法:
这个内置方法将Python对象作为参数并返回其中的项目数。它可以用于字符串、列表、字典、元组和集合。唯一需要注意的是参数必须是序列或集合。
查找简单字典的长度:
考虑一个人的以下细节:
Name:Steve
Age:30
Designation:Programmer
这个信息可以用一个简单的字典来表示。一个简单的字典只包含一些键值对。它们并不复杂。应用len()
方法时,直接给出答案。它给出了字典中的条目数。例如:
# Python program to find
# length of the dictionary
# a simple dictionary
dict1 ={'Name':'Steve', 'Age':30, 'Designation':'Programmer'}
# using len() counts the
# number of entries
print("len() method :", len(dict1))
# using dict.keys() counts
# the no.of.keys in dictionary
print("len() method with keys() :", len(dict1.keys()))
# using dict.values() counts
# the no.of.valuess in dictionary
print("len() method with values():", len(dict1.values()))
输出:
len() method : 3
len() method with keys() : 3
len() method with values(): 3
查找嵌套字典的长度:
考虑以下关于一个人的细节:
Name:Steve
Age:30
Designation:Programmer
address:
Street:Brigade Road
City:Bangalore
Country:India
这种信息可以使用嵌套字典来表示。嵌套字典包含字典中的字典。在键值对中,对于一个键,另一个字典可以是值。在这种情况下,如果简单地将字典传递给len()
方法,则输出将不正确。看下面的代码:
# Python program to find
# length of the nested dictionary
# A nested dictionary
dict2 ={ # outer dictionary
'Name':'Steve',
'Age':30,
'Designation':'Programmer',
'address':{# inner dictionary
'Street':'Brigade Road',
'City':'Bangalore',
'Country':'India'
}
}
print("len() method :", len(dict2))
print("len() method with keys() :", len(dict2.keys()))
print("len() method with values():", len(dict2.values()))
输出:
len() method : 4
len() method with keys() : 4
len() method with values(): 4
无论您应用哪种方法,您都只会得到“4”作为输出。但实际条目数是“7”。键是姓名、年龄、职务、地址、街道、城市和国家。该方法将作为键之一的值的内部字典视为单个值。为了克服这个问题,我们需要明确地将内部字典的长度添加到外部字典。它可以编码如下:
# Python program to find the
# length of the nested dictionary
# A nested dictionary
dict2 ={
'Name':'Steve',
'Age':30,
'Designation':'Programmer',
'address':
{
'Street':'Brigade Road',
'City':'Bangalore',
'Country':'India'
}
}
# total length = length of outer dict +
# length of inner dict
length = len(dict2)+len(dict2['address'])
print("The length of the nested dictionary is ", length)
输出:
The length of the nested dictionary is 7
现在它工作正常!!!
但是,是否可以显式编程以每次添加内部字典的长度?如果我们事先不知道有多少内字典怎么办?现在考虑以下细节:
Name:
first name:Steve
last name:Jobs
Age:30
Designation:Programmer
address:
Street:Brigade Road
City:Bangalore
Country:India
这里我们有两个内部字典。每次显式添加内部字典的长度并不是一种优化的方法。我们可以通过结合isinstance()
和len()
方法来解决这个问题。
isinstance() 方法:
这个方法有两个参数。第一个是对象。我们需要传递一个Python对象给它。对象可以是 int、float、iterable 或任何东西。要传递的第二个参数是type/class 。它表示检查第一个参数的实例的类型/类。这个方法可以帮助我们找到嵌套字典的长度。
这个想法是首先将整个字典的长度存储在一个变量中(这里说“长度”) 。然后遍历字典的所有values()
并检查它是否是dict
的实例。如果'True'
则找到该内部字典的长度并将其添加到变量length
中。通过这种方式,可以找到嵌套字典的总长度。示例代码如下。
# Python program to find
# length of nested dictionary
# nested dictionary
dict2 ={
'Name':
{
'first_name':'Steve',
'Last_name':'Jobs'
},
'Age':30,
'Designation':'Programmer',
'address':
{
'Street':'Rockins Road',
'City':'Bangalore',
'Country':'India'
}
}
# storing the outer dictionary length
length = len(dict2)
# iterating to find the length
# of all inner dictionaries
for i in dict2.values():
# checking whether the value is a dictionary
if isinstance(i, dict):
length += len(i)
print("The length of the dictionary is", length)
输出:
The length of the dictionary is 9
如果字典嵌套更深,如下所示:
Name:
first name:Steve
last name:Jobs
Age:30
Designation:Programmer
address:
Street:
St_number:4
St_name:Brigade Road
City:Bangalore
Country:India
然后修改代码如下:
# Python program to find
# length of nested dictionary
# nested dictionary
dict2 ={
'Name':
{
'first_name':'Steve',
'Last_name':'Jobs'
},
'Age':30,
'Designation':'Programmer',
'address':
{
'Street':
{
'st_number':4,
'st_name':'Rockins Road'
},
'City':'Bangalore',
'Country':'India'
}
}
# storing the outer dictionary length
length = len(dict2)
# iterating to find the length
# of all inner dictionaries
for i in dict2.values():
# checking whether the value is a dictionary
if isinstance(i, dict):
# add the length of inner dictionary
length += len(i)
# check whether th inner dictionary
# is further nested
for j in i.values():
if isinstance(j, dict):
length += len(j)
print("The total length of the dictionary is ", length)
输出:
The total length of the dictionary is 11