[英]String control with for-loop and dict in Python
我寫了一篇字典:
msgs = {"msg_1" : "a", "msg_2" : "b", "msg_3" : "c"}
現在我不想手動讀取字典,因為我不知道其中有多少個元素(我從文件中讀取字典):
z = "msg_{j}"
for i in range(1, len(msgs) - 1):
y = z.format(j=i) # This makes it "msg_1", "msg_2", "msg_3", ...
print(msgs[y])
這將引發KeyError: msg_1
。 如果我一張一張地打印出來,那就很好了:
print(msgs["msg_1"])
print(msgs["msg_2"])
print(msgs["msg_3"])
... a
... b
... c
知道原因是什么嗎? 為什么會這樣呢?
我測試了所有功能,一切正常,直到我了解了循環部分(如果我使用print()而不是循環,則可以正常工作)。
您想遍歷字典。
對於Python 2.x:
for key, value in msgs.iteritems():
對於Python 3.x:
for key, value in msgs.items():
可以在此處找到更多詳細信息。
在您的情況下,將len(msgs) - 1
替換為len(msgs) + 1
,
msgs = {"msg_1" : "a", "msg_2" : "b", "msg_3" : "c"}
z = "msg_{j}"
for i in range(1, len(msgs) + 1):
y = z.format(j=i) # This makes it "msg_1", "msg_2", "msg_3", ...
print(msgs[y])
# Output
a
b
c
我認為您缺少dict
對象的.keys()
方法。 它返回dict
對象中所有鍵的列表。
for key in msgs.keys():
print msgs[key]
從SarTheFirst查看解決方案。 如果要按排序順序打印:
for key in sorted(msg):
print(msgs[key])
謝謝大家,我找到了解決我問題的解決方案。
string = "msg_{j}"
不起作用,不知道為什么。 但是有效的是您使用了r""
。 因此出於某種原因, string = r"msg_{j}"
可以工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.