我無法訪問字典中的多個值。假設我有這本字典:
{'1': 0, '2': 1, '3': 2, '4': 3, '5': 4, '6': 5}
我想找到兩個總和為 6 的鍵并顯示它們的值。這里,鍵 4 和 2 加到 6,所以 2 的值是 3 和 1。
我從哪說起呢?這是我到目前為止的代碼:
for key in dico:
if sum(key key) == 6:
print(f"Numbers @ {key:dico} have a sum of 6")
uj5u.com熱心網友回復:
不需要額外的回圈(或 itertools),它們只會減慢你的程式。您已經知道另一個索引需要是什么(因為您可以從 6 中減去該索引),因此只需檢查該索引是否存在:
dct = {'1': 0, '2': 1, '3': 2, '4': 3, '5': 4, '6': 5}
for i, key in enumerate(dct):
if i 2 > len(dct)/2:
break
matchIndex = str(6 - int(key))
if dct.get(matchIndex) is not None:
print(f'Keys {key} and {matchIndex} have values {dct[key]} and {dct[matchIndex]}')
這種方法的時間復雜度為 O(n/2),而另一種方法的時間復雜度為 O(n^2)。
當我用 測驗這種方法時timit,運行這個答案一百萬次需要 1.72 秒,但 itertools 答案需要 5.83 秒。
uj5u.com熱心網友回復:
您需要將每個字典鍵與其他鍵進行比較。你可以用itertools這個。
正如您提到的,您想列印value字典中的每個鍵的,它會是這樣的:
import itertools
dico = {'1': 0, '2': 1, '3': 2, '4': 3, '5': 4, '6': 5}
for a, b in itertools.combinations(dico.keys(), 2):
if int(a) int(b) == 6:
print(f"{dico[a]} - {dico[b]}")
uj5u.com熱心網友回復:
為此,您需要兩個回圈。
另外,請記住,該問題的答案不止一個
a = {'1': 0, '2': 1, '3': 2, '4': 3, '5': 4, '6': 5}
results = list()
for key_1 in a.keys():
for key_2 in a.keys():
if key_1 != key_2:
if a[key_1] a[key_2] == 6:
if a[key_1] < a[key_2]:
results.append((key_1, key_2))
print(results)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/528186.html
標籤:Python字典钥匙
下一篇:字典值的平均值
