-3

そこで、入力内容に応じて都市の最低気温を検出するコードを書きました。現在の問題は、ループの各プロセスから個々の結果を取得していることです。そのため、天気と都市を含む 1 つの最終的な印刷ステートメントの代わりに、最終的には

[(-3, 'Toronto')]
The coldest city is: Toronto -3
[(-5, 'Edmonton'), (-3, 'Toronto')]
The coldest city is: Edmonton -5
[(-5, 'Edmonton'), (-4, 'Calgary'), (-3, 'Toronto')]
The coldest city is: Edmonton -5

私の入力はトロント、-3 エドモントン -5、カルガリー -4 です。

これは私のコードです

dic = {}
for i in range(5):
        city = input("Enter city followed by temperature >")
        if (city != "stop"):       
                info = city.split()
                dic[info[0]] = int(info[1])
        elif city == "stop":
                break
print(dic) 
alist=[] 
for k,v in dic.items(): 
        alist.append((v,k)) 
        alist.sort() 
        print(alist)
        temp = alist[0]
        print("The coldest city is:",temp[1], temp[0])
4

3 に答える 3

2

appendループの外側を除くすべてを移動して、すべてのデータが の内側にある後、1 回だけ実行されるようにしalistます。

for k,v in dic.items(): 
    alist.append((v,k)) 
alist.sort() 
print(alist)
temp = alist[0]
print("The coldest city is:",temp[1], temp[0])
于 2013-11-15T06:17:17.567 に答える
1

なぜあなたdictはまったく必要なのですか?Alistまたは a のset方が理にかなっている可能性があります

cities = []
for i in range(5):
    city = input("Enter city followed by temperature >")
    if city == "stop":
        break
    info = city.split()
    cities.append((int(info[1]), info[0]))

print("The coldest city is: {} {}".format(*min(cities)))
于 2013-11-15T06:36:05.483 に答える
1

最初にすべての項目を追加してから、並べ替えを適用する必要があります。

alist=[] 
for k,v in dic.items():
    alist.append((v,k)) 
alist.sort() 
print(alist)
temp = alist[0]
print("The coldest city is:",temp[1], temp[0])

または、より短いバージョンを使用することになりますmin。これにはO(N)時間がかかります (ソートの必要はありません)。

min(dic, key=dic.get) #Returns the key with smallest value
min(dic.items(), key = lambda x:x[1]) #return key, value pair 
于 2013-11-15T06:18:07.610 に答える