在嵌套列表中打印第二低分记分员的名称,并在Python中按字母顺序排列 如果uuuu name_uuuu=='\uuuuuuu main\uuuuuu': arr=[] 对于范围内的(int(input()): 名称=输入() arr.append(名称) 分数=浮动(输入() arr.append(分数) 数组=[arr[i:i+2]表示范围内的i(0,len(arr),2)] 分数=[] 对于范围(0,len(数组))中的j: marks.append(数组[j][1]) 标记=列表(映射(浮动,标记)) marks.sort() seclow=分数[1] 对于范围(0,len(数组))中的k: 如果(seclow==float(数组[k][1]): 打印(数组[k][0])
唯一的问题是按字母顺序排列得分最低的名字。我应该使用列表来通过测试用例。那么,应该对代码进行哪些更改?通过此处检查: 而不是定义列表。把它存到字典里。这将为您提供空间优化的解决方案。然后按值对字典排序。在字典中添加有分数的名称 试试看:在嵌套列表中打印第二低分记分员的名称,并在Python中按字母顺序排列 如果uuuu name_uuuu=='\uuuuuuu main\uuuuuu': arr=[] 对于范围内的(int(input()): 名称=输入() arr.append(名称) 分数=浮动(输入() arr.append(分数) 数组=[arr[i:i+2]表示范围内的i(0,len(arr),2)] 分数=[] 对于范围(0,len(数组))中的j: marks.append(数组[j][1]) 标记=列表(映射(浮动,标记)) marks.sort() seclow=分数[1] 对于范围(0,len(数组))中的k: 如果(seclow==float(数组[k][1]): 打印(数组[k][0]),python,python-3.x,list,nested-lists,Python,Python 3.x,List,Nested Lists,唯一的问题是按字母顺序排列得分最低的名字。我应该使用列表来通过测试用例。那么,应该对代码进行哪些更改?通过此处检查: 而不是定义列表。把它存到字典里。这将为您提供空间优化的解决方案。然后按值对字典排序。在字典中添加有分数的名称 试试看: import collections if __name__ == '__main__': arr = {} for _ in range(int(input())): name = input() score =
import collections
if __name__ == '__main__':
arr = {}
for _ in range(int(input())):
name = input()
score = float(input())
arr[name] = score
dd = collections.defaultdict(list)
for k,v in arr.items():
dd[v].append(k)
x = sorted(dd.items())
sec_low = sorted(x[1][1])
for i in sec_low:
print(i)
5
Harry
37.21
Berry
37.21
Tina
37.2
Akriti
41
Harsh
39
Berry
Harry
[(37.2, ['Tina']),
(37.21, ['Harry', 'Berry']),
(39.0, ['Harsh']),
(41.0, ['Akriti'])]
输入:
import collections
if __name__ == '__main__':
arr = {}
for _ in range(int(input())):
name = input()
score = float(input())
arr[name] = score
dd = collections.defaultdict(list)
for k,v in arr.items():
dd[v].append(k)
x = sorted(dd.items())
sec_low = sorted(x[1][1])
for i in sec_low:
print(i)
5
Harry
37.21
Berry
37.21
Tina
37.2
Akriti
41
Harsh
39
Berry
Harry
[(37.2, ['Tina']),
(37.21, ['Harry', 'Berry']),
(39.0, ['Harsh']),
(41.0, ['Akriti'])]
输出:
import collections
if __name__ == '__main__':
arr = {}
for _ in range(int(input())):
name = input()
score = float(input())
arr[name] = score
dd = collections.defaultdict(list)
for k,v in arr.items():
dd[v].append(k)
x = sorted(dd.items())
sec_low = sorted(x[1][1])
for i in sec_low:
print(i)
5
Harry
37.21
Berry
37.21
Tina
37.2
Akriti
41
Harsh
39
Berry
Harry
[(37.2, ['Tina']),
(37.21, ['Harry', 'Berry']),
(39.0, ['Harsh']),
(41.0, ['Akriti'])]
x:
import collections
if __name__ == '__main__':
arr = {}
for _ in range(int(input())):
name = input()
score = float(input())
arr[name] = score
dd = collections.defaultdict(list)
for k,v in arr.items():
dd[v].append(k)
x = sorted(dd.items())
sec_low = sorted(x[1][1])
for i in sec_low:
print(i)
5
Harry
37.21
Berry
37.21
Tina
37.2
Akriti
41
Harsh
39
Berry
Harry
[(37.2, ['Tina']),
(37.21, ['Harry', 'Berry']),
(39.0, ['Harsh']),
(41.0, ['Akriti'])]
不使用任何导入和更少的代码,可以这样做。 我还把它放进了一个函数中,只是为了让它更干净一点,所以如果需要的话,你可以在其他地方重用它
def main():
scores_dict = {}
for _ in range(int(input())):
name, score = input(), float(input())
if score not in scores_dict:
scores_dict[score] = []
scores_dict[score].append(name)
# Delete the min score key and names so that we can grab the second min
del scores_dict[min(scores_dict.keys())]
# Get new min score.
min_score = min(scores_dict.keys())
# Sort new min score.
scores_dict[min_score].sort()
# Print each name in results
[print(i) for i in scores_dict[min_score]]
if __name__ == '__main__':
main()
处理重复最低和重复第二最低 样本输入:{“hri”:6.2,“dav”:1.1,“asv”:1.1,“wrs”:12.3,“dup”:6.2,“awe”:43.2,“asw”:22.2,“asd”:6.2} 输出:['asd'、'dup'、'hri']可以打印到“\n”
您将每个条目的名称和分数添加到相同的列表中。如果你重新排序,名字和分数就会混淆。考虑到这是键值对的基本情况。我会制作一本以分数为键的字典,并列出名称/值。这样你就可以给他们打电话了。你的问题解决了吗?是的。谢谢你帮我。从你身上学到了很多@PygirlThanks寻求解决方案。这对我来说容易多了。