Duyệt từng phần tử thông qua key trong trong dictionary bằng while

Em hiện tai đang học về python trên trường và có thắc mắc như sau:
Theo em biết thì mọi vòng lặp for trong python đều có thể chuyển sang while. Trong quá trình học về kiểu dictionary thì để duyệt từng giá trị của các key trong dict thì em dùng hàm for.
Như ở bài dưới:
Viết chương trình python để cộng giá trị các phần tử có key giống nhau từ 2 dict cho trước.
Ví dụ nhập vào:

d1 = {'a': 15, 'b': 20, 'c':30, 'e': 60 } 
d2 = {'a': 30, 'b': 20, 'd':50}

Kết quả đầu ra:

{'a': 45, 'b': 40, 'd': 50, 'c': 30, 'e': 60} 

Thì để giải quyết bài này em dùng vòng for như sau:

d1 = {'a': 15, 'b': 20, 'c':30, 'e': 60 }
d2 = {'a': 30, 'b': 20, 'd':50}
d3 = d1.copy()
for key in d2.keys():
   d3[key] = d3.get(key,0) + d2[key]
   print(d3[key])
print(d3)

Em muốn hỏi có cách giải quyết bài theo vòng while không ạ? Em đã thử test n lần mà chưa giải được nên mong anh chị có thể giải đáp bài hoặc cho em gợi ý để hoàn thành các bài dạng này theo n cách ạ. Em cảm ơn nhiều ạ.

mọi việc dùng vòng for được thì cũng dùng while được. Tuy nhiên có thể sẽ phải tốn nhiều dòng code hơn 1 chút

turn this

for key in d2.keys():
    pass  # do cool thing here

to this

keys = iter(d2.keys())
while True:
    try:
        key = next(keys)
    except StopIteration:  # No more item. Stop now
        break
    pass # do cool thing here

or this

i = 0
keys = id2.keys()
while i < len(keys):
    key = keys[i]
    i += 1
    pass # do cool thing here
5 Likes

em cảm ơn anh n ak :heart_eyes::heart_eyes:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?