簡體   English   中英

我在理解此代碼時遇到麻煩

[英]I'm having trouble understanding this code

我是python的新手,正在嘗試通過hackerrank進行學習。 我不了解此列表概念。 這就是問題

輸入格式:

第一行包含一個整數,即學生人數。 后面的幾行用行來描述每個學生; 第一行包含學生的姓名,第二行包含學生的成績。

約束條件

總會有一個或多個學生的成績第二低。

輸出格式:

打印任何物理第二低的學生的姓名; 如果有多個學生,請按字母順序排列其姓名,然后將每個姓名打印在新行中。

樣本輸入0:

5

Harry
37.21
Berry
37.21
Tina
37.2
Akriti
41
Harsh
39

樣本輸出0:

Berry

Harry

from __future__ import print_function
score_list = {}
for _ in range(input()):
    name = raw_input()
    score = float(raw_input())
    if score in score_list:
        score_list[score].append(name)
    else:
        score_list[score] = [name]
new_list = []
for i in score_list:
     new_list.append([i, score_list[i]])
new_list.sort()
result = new_list[1][1]
result.sort()
print (*result, sep = "\n")

我無法理解“在”在這里的功能,並沒有in檢查列表中的一個值,所以是不是score_list空的?

我在代碼中添加了注釋以便更好地理解,希望對您有所幫助。

from __future__ import print_function
# Create an empty dict
score_list = {}
# Take a number input and run this loop that many times
for _ in range(input()):
    name = raw_input()
    score = float(raw_input())
    # if value of score is an existing key in dict, add name to the value of that key
    if score in score_list:
        score_list[score].append(name)
    else:
        # Else create a key with score value and initiate the value with a list
        score_list[score] = [name]
new_list = []
for i in score_list:
     new_list.append([i, score_list[i]])
new_list.sort()
result = new_list[1][1]
result.sort()
print (*result, sep = "\n")

第一次字典是空的,但是第二次不是。 我在每一行添加了評論。

# Import
from __future__ import print_function
# Create a new dictionary to save the scores
score_list = {}
# For every input, do something
for _ in range(input()):
    # Grab the name of the current user
    name = raw_input()
    # Grab the score of the current
    score = float(raw_input())
    # If the score is already in the list,
    # append the name to that score
    if score in score_list:
        score_list[score].append(name)
    # Else add the new score and name to the list
    else:
        score_list[score] = [name]
# Create a new list
new_list = []
# Copy score list into the new list
for i in score_list:
     new_list.append([i, score_list[i]])
# Sort on score value
new_list.sort()
# Return the second highest score
result = new_list[1][1]
# Sort the names of the result
result.sort()
# Print it
print (*result, sep = "\n")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM