python-3.x - 有人可以帮我为打印语句创建变量吗?
问题描述
我不擅长创建变量,尤其是对于这段困难的代码。
topic_page = client.get_paginator('list_topics').paginate()
for topic in list(topic_page)[0]['Topics']:
try:
subscriptions_page = client.get_paginator('list_subscriptions_by_topic').paginate(TopicArn=topic.get('TopicArn'))
if list(subscriptions_page):
for subscription in list(subscriptions_page)[-1]['Subscriptions']:
try:
*print('TopicArn', subscription['TopicArn'])
print('Protocol -', subscription['Protocol'])
print('SubscriptionArn', subscription['SubscriptionArn'])*
except:
pass
我想为打印语句创建变量。
解决方案
尽管您在评论中进行了澄清,但仍不清楚您想要做什么。在 Python 中,没有好的方法可以在另一个变量中创建一个以字符串命名的变量(这并非不可能,但这样做的方法通常是坏主意)。变量名应该是供程序员与之交互的。它们本身不是数据。对于数据,您需要一个数据结构,就像subscription
您已经在处理的字典一样。
但这并不意味着您不能简化代码,也许可以使用一些变量。最简单的情况是,您可以在打印之前进行一些分配,因此您可以对这些值执行其他操作,而不是打印它们,如果您愿意:
topic_arn = subscription['TopicArn']
protocol = subscription['Protocol']
subscription_arn = subscription['SubscriptionArn']
print('TopicArn', topic_arn)
print('Protocol -', protocol)
print('SubscriptionArn', subscription_arn)
# do other stuff down here with the variables, if you want
但这比您拥有的代码更多,也许您想要更少的代码。如果您不想对从字典中获取的键进行硬编码,则可以迭代现有的键,将每个键及其值打印出来:
for key, value in subscriptions.items():
print(key, value)
这要简单得多!但如果字典包含额外的内容,它可能会打印您不想要的键和值,或者以错误的顺序迭代所需的键。所以我们可以改为遍历我们想要显示的键的元组,并用它们对应的值打印它们:
key_list = 'TopicArn', 'Protocol', 'SubscriptionArn' # this could be defined somewhere earlier
for key in key_list:
print(key, subscription[key])
-
如果您需要对某些键而不是其他键进行特殊演示(例如,在协议输出的中间),这可能无法准确打印出您想要的内容。如果您真的想拥有可定制的输出,您可能会向元组添加额外的东西。
推荐阅读
- c# - PUN 2 获取和设置自定义属性
- python - 循环遍历数据框列表时删除数据框的第一行
- azure-devops - Azure DevOPS 2019 中的代理
- java - 通过 cURL (json) 显示消息(Spring Boot)
- apache-spark - 使用来自 pyspark 2.4.4 的火花流
- java - 如何用Java中的特定字符串替换数组中的所有倍数
- node.js - nodejs请求发布大json失败
- php - PHP - MYSQL 致命错误:常量表达式包含无效操作
- php - 使用 Snappy PDF 在 linux 中打印 pdf 时出错
- docker - 创建一个 dockerfile 来编译源代码