使用 for 循环打印部分字典 Python
Printing parts of a dictionary by using a for loop Python
如何为 clients
字典打印出 Accountname, APIkey, APIsecret
?我想以预期输出的格式打印它。
代码:
clients = {1: {'AccountName': 'Acount1', 'APIKey': 'sdhsdhjsd','APIsecret':'sadjkaskldjaskdadasdfvg'},
2: {'AccountName':'Acount2', 'APIKey':'sdasdasdadc','APIsecret':'sdasdasdassvsdvdsfdfsaf'}}
for clients_info in clients.items():
print("Accountname: ", clients_info['AccountName'], "APIkey: ", clients_info['APIKey'], "APIsecret: ", clients_info['APIsecret'])
预期输出:
Accountname: Acount1 APIkey: sdhsdhjsd APIsecret: sadjkaskldjaskdadasdfvg
Accountname: Acount2 APIkey: sdasdasdadc APIsecret: sdasdasdassvsdvdsfdfsaf
实际输出:
TypeError: tuple indices must be integers or slices, not str
如果您对外部字典的键不感兴趣,请迭代 clients.values()
而不是 clients.items()
:
for clients_info in clients.values():
print("Accountname:", clients_info['AccountName'], "APIkey:", clients_info['APIKey'], "APIsecret:", clients_info['APIsecret'])
生产
Accountname: Acount1 APIkey: sdhsdhjsd APIsecret: sadjkaskldjaskdadasdfvg
Accountname: Acount2 APIkey: sdasdasdadc APIsecret: sdasdasdassvsdvdsfdfsaf
此外,print()
会自动在其参数之间添加 space,因此您不必在输出标签后添加额外的 space。
当使用 clients.items()
和单个可迭代对象时,每个可迭代对象都是值键的元组,即 (key, value)
。如果你愿意,你可以通过 for key, value in clients.items()
来解压它们,否则你必须在 for 循环之后自己存储它们:
for client_info_tuple in clients.items():
client_info = client_info_tuple[1]
但我认为第一个选项更简洁。因为你不需要索引(据我所知)你可以只做 clients.values()
或者在索引变量前面放一个 _
这样你的 IDE 就不会抱怨它。
如果你使用的是 Python >= 3.6,你也可以使用 f-strings,这让这类东西看起来更漂亮,在我看来:
for _index, client_info in clients.items():
print(
f"Accountname: {client_info['AccountName']} "
f"APIKey: {client_info['APIKey']} "
f"APIsecret: {client_info['APIsecret']}"
)
输出:
Accountname: Acount1 APIKey: sdhsdhjsd APIsecret: sadjkaskldjaskdadasdfvg
Accountname: Acount2 APIKey: sdasdasdadc APIsecret: sdasdasdassvsdvdsfdfsaf
如何为 clients
字典打印出 Accountname, APIkey, APIsecret
?我想以预期输出的格式打印它。
代码:
clients = {1: {'AccountName': 'Acount1', 'APIKey': 'sdhsdhjsd','APIsecret':'sadjkaskldjaskdadasdfvg'},
2: {'AccountName':'Acount2', 'APIKey':'sdasdasdadc','APIsecret':'sdasdasdassvsdvdsfdfsaf'}}
for clients_info in clients.items():
print("Accountname: ", clients_info['AccountName'], "APIkey: ", clients_info['APIKey'], "APIsecret: ", clients_info['APIsecret'])
预期输出:
Accountname: Acount1 APIkey: sdhsdhjsd APIsecret: sadjkaskldjaskdadasdfvg
Accountname: Acount2 APIkey: sdasdasdadc APIsecret: sdasdasdassvsdvdsfdfsaf
实际输出:
TypeError: tuple indices must be integers or slices, not str
如果您对外部字典的键不感兴趣,请迭代 clients.values()
而不是 clients.items()
:
for clients_info in clients.values():
print("Accountname:", clients_info['AccountName'], "APIkey:", clients_info['APIKey'], "APIsecret:", clients_info['APIsecret'])
生产
Accountname: Acount1 APIkey: sdhsdhjsd APIsecret: sadjkaskldjaskdadasdfvg
Accountname: Acount2 APIkey: sdasdasdadc APIsecret: sdasdasdassvsdvdsfdfsaf
此外,print()
会自动在其参数之间添加 space,因此您不必在输出标签后添加额外的 space。
当使用 clients.items()
和单个可迭代对象时,每个可迭代对象都是值键的元组,即 (key, value)
。如果你愿意,你可以通过 for key, value in clients.items()
来解压它们,否则你必须在 for 循环之后自己存储它们:
for client_info_tuple in clients.items():
client_info = client_info_tuple[1]
但我认为第一个选项更简洁。因为你不需要索引(据我所知)你可以只做 clients.values()
或者在索引变量前面放一个 _
这样你的 IDE 就不会抱怨它。
如果你使用的是 Python >= 3.6,你也可以使用 f-strings,这让这类东西看起来更漂亮,在我看来:
for _index, client_info in clients.items():
print(
f"Accountname: {client_info['AccountName']} "
f"APIKey: {client_info['APIKey']} "
f"APIsecret: {client_info['APIsecret']}"
)
输出:
Accountname: Acount1 APIKey: sdhsdhjsd APIsecret: sadjkaskldjaskdadasdfvg
Accountname: Acount2 APIKey: sdasdasdadc APIsecret: sdasdasdassvsdvdsfdfsaf