簡體   English   中英

Python中帶for循環和dict的字符串控制

[英]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.

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