|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 想学py的小白 于 2023-4-11 19:42 编辑
二、 假设已经执行了下列语句序列:
animals = { 'a': ['aardvark'], 'b': ['baboon'], 'c': ['coati']} #值为列表
animals['d'] = ['donkey']
animals['d'].append('dog')
animals['d'].append('dingo')
编写函数 howMany(Dict),返回结果为字典中值的总个数(包含每个列表中的元 素个数)。如:
>>> print (howMany(animals))
又如:
>>>print(howMany({'a': [8, 11, 4, 18], 'H': [19, 19, 16], 'L': [12], 'O': [12, 2, 14, 2], 'p': [7, 15, 7, 15, 10], 's': [], 't': [], 'y': [11, 19, 12, 0]}) )
21
代码:
def howMany(Dict):
k = Dict.keys()
ans = 0
for i in k:
ans += len(Dict[i])
return (ans)
animals = { 'a': ['aardvark'], 'b': ['baboon'], 'c': ['coati']} animals['d'] = ['donkey']
animals['d'].append('dog')
animals['d'].append('dingo')
print(howMany(animals))
print(howMany({'a': [8, 11, 4, 18], 'H': [19, 19, 16], 'L': [12], 'O': [12, 2, 14, 2], 'p': [7, 15, 7, 15, 10], 's': [], 't': [], 'y': [11, 19, 12, 0]}) )
三、假定已经执行了以下语句序列:
animals = { 'a': ['aardvark'], 'b': ['baboon'], 'c': ['coati']} #值都是列表
animals['d'] = ['donkey']
animals['d'].append('dog')
animals['d'].append('dingo')
编写函数: bigest(Dict) ,返回其值包含元素个数最多的键值。
例如:
>>> biggest(animals)
'd'
又如:
>>>biggest({'a': [3, 3, 18], 'c': [3, 15, 12, 10, 0], 'b': [10, 19, 14, 5, 16, 20, 11, 6], 'd': [5, 16, 8, 16, 6, 1]})
'b'
代码:
def biggest(Dict):
max=-1
max_key=''
k = Dict.keys()
for i in k:
if(len(Dict[i])>max):
max=len(Dict[i])
max_key=i
return max_key
animals = { 'a': ['aardvark'], 'b': ['baboon'], 'c': ['coati']} #值都是列表
animals['d'] = ['donkey']
animals['d'].append('dog')
animals['d'].append('dingo')
print(biggest(animals))
test={'a': [3, 3, 18], 'c': [3, 15, 12, 10, 0], 'b': [10, 19, 14, 5, 16, 20, 11, 6], 'd': [5, 16, 8, 16, 6, 1]}
print(biggest(test))
本帖最后由 isdkz 于 2023-4-11 20:21 编辑
这里有两个题目,我会分别解释每个题目的代码思路和详细解释。
题目二:
思路:遍历字典的键,通过键索引字典的值(列表),计算列表的长度并累加到结果中。
详细解释:
- 定义一个函数 howMany,接收一个字典作为参数。
- 获取字典的所有键。
- 初始化一个变量 ans,用来存储所有列表元素的个数。
- 遍历字典的键,通过键索引字典的值(列表),累加列表的长度到 ans。
- 返回累加结果。
但是,原代码中存在一个错误,应该将 ans += len(Dict) 更改为 ans += len(Dict[i])。
修正后的代码如下:
- def howMany(Dict):
- k = Dict.keys()
- ans = 0
- for i in k:
- ans += len(Dict[i])
- return (ans)
复制代码
题目三:
思路:遍历字典的键,通过键索引字典的值(列表),比较列表的长度,保留最长列表的键。
详细解释:
- 定义一个函数 biggest,接收一个字典作为参数。
- 初始化一个变量 max 为 -1,用来存储最长列表的长度。
- 初始化一个变量 max_key 为空字符串,用来存储最长列表对应的键。
- 获取字典的所有键。
- 遍历字典的键,通过键索引字典的值(列表)。
- 如果当前列表的长度大于 max,更新 max 为当前列表的长度,并将当前键赋值给 max_key。
- 返回 max_key。
但是,原代码中存在一个错误,应该将 if(len(Dict)>max): 更改为 if(len(Dict[i])>max):,并将 max=len(Dict) 更改为 max=len(Dict[i])。
修正后的代码如下:
- def biggest(Dict):
- max=-1
- max_key=''
- k = Dict.keys()
- for i in k:
- if(len(Dict[i])>max):
- max=len(Dict[i])
- max_key=i
- return max_key
复制代码
测试代码如下:
- animals = { 'a': ['aardvark'], 'b': ['baboon'], 'c': ['coati']} #值都是列表
- animals['d'] = ['donkey']
- animals['d'].append('dog')
- animals['d'].append('dingo')
- print(howMany(animals))
- print(howMany({'a': [8, 11, 4, 18], 'H': [19, 19, 16], 'L': [12], 'O': [12, 2, 14, 2], 'p': [7, 15, 7, 15, 10], 's': [], 't': [], 'y': [11, 19, 12, 0]}))
- print(biggest(animals))
- test={'a': [3, 3, 18], 'c': [3, 15, 12, 10, 0],'b': [10, 19, 14, 5, 16, 20, 11, 6], 'd': [5, 16, 8, 16, 6, 1]}
- print(biggest(test))
复制代码
测试结果如下:
- howMany(animals) 的结果为: 6
- howMany({'a': [8, 11, 4, 18], 'H': [19, 19, 16], 'L': [12], 'O': [12, 2, 14, 2], 'p': [7, 15, 7, 15, 10], 's': [], 't': [], 'y': [11, 19, 12, 0]}) 的结果为: 21
- biggest(animals) 的结果为: 'd'
- biggest(test) 的结果为: 'b'
复制代码
如您所见,修正后的代码已经解决了问题,并产生了正确的结果。
在这两个问题中,我们都需要遍历字典的键并访问对应的值(列表),在题目二中,我们统计列表元素的个数;
而在题目三中,我们找到最长的列表并返回其对应的键。
|
|