带有增量添加的Python列表操作

2024-04-25 23:33:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python(运行PySpark的AWS Glue中的版本3.6)列表:

['id', 'account_id', 'lab_order_id', 'match_status', 'report_date', 'message', 'reporting_states', 'state_messages', 'overall_consistency', 'alerts', 'run_datetime_partition', 'run_datetime']

我想从列表中得到一个如下所示的字符串:

$1 "ID", $2 "ACCOUNT_ID", $3 "LAB_ORDER_ID", $4 "MATCH_STATUS", $5 "REPORT_DATE", $6 "MESSAGE", $7 "REPORTING_STATES", $8 "STATE_MESSAGES", $9 "OVERALL_CONSISTENCY", $10 "ALERTS", $11 "RUN_DATETIME"

到目前为止,我已经关闭了字符串,没有在每个引用的名称之前增加$num。我需要增量是动态的,因为不是每个表都有相同的列数。你知道吗

# Variable List
column_names = final_table_data_frame.schema.names
column_strings = ('","').join(column_names).upper().replace(',"RUN_DATETIME_PARTITION"','')
var_list = '"' + column_strings + '"'

其中列名称项来自上一个数据帧的架构。我尝试过使用lambda,但是在用字符串连接结果时遇到了问题。你知道吗


Tags: run字符串名称awsid列表datetimenames
2条回答

我通过使用字典和进一步的分析找到了一个解决方案:

column_names = final_table_data_frame.drop("run_datetime_partition").schema.names
dict = dict(enumerate(column_names, start = 1))
column_strings = (',').join(['$%s "%s"' % (key, value) for (key, value) in dict.items()]).upper()

您可以使用enumerate+f-string,然后使用join

lst = ['id', 'account_id', 'lab_order_id', 'match_status', 'report_date', 'message', 'reporting_states', 
       'state_messages', 'overall_consistency', 'alerts', 'run_datetime_partition', 'run_datetime']
result = ', '.join([f'${i} "{e.upper()}"' for i, e in enumerate(lst, 1)])
print(result)

输出

$1 "ID", $2 "ACCOUNT_ID", $3 "LAB_ORDER_ID", $4 "MATCH_STATUS", $5 "REPORT_DATE", $6 "MESSAGE", $7 "REPORTING_STATES", $8 "STATE_MESSAGES", $9 "OVERALL_CONSISTENCY", $10 "ALERTS", $11 "RUN_DATETIME_PARTITION", $12 "RUN_DATETIME"

相关问题 更多 >