Python中无需循环与max/len实现文本等长对齐的内置方法?
用Python内置方法实现用户名与手牌的对齐输出
你完全没必要修改字典的键来实现对齐,Python的字符串格式化功能直接就能搞定,而且代码更简洁,还不会改动原始数据。
核心思路
先算出所有用户名的最长长度,然后在输出时用内置的对齐功能自动补空格,不用手动循环拼接。
方法1:f-string 格式化对齐
这是最直观的方式,利用f-string的<左对齐格式符,指定对齐宽度为最长用户名的长度:
users = {'john': {'hand': [1,2]},'var_to_change': {'hand': [1,2]}} # 计算最长用户名的长度 max_name_len = max(len(name) for name in users.keys()) for player, data in users.items(): hand = data['hand'] # 左对齐用户名,宽度为max_name_len disp_hand = f'{player:<{max_name_len}}: ¦' for card in hand: disp_hand += f'[{card}]' disp_hand += '¦' print(disp_hand)
方法2:str.ljust() 方法
用字符串的ljust()方法,自动在右侧补空格到指定长度:
users = {'john': {'hand': [1,2]},'var_to_change': {'hand': [1,2]}} max_name_len = max(len(name) for name in users.keys()) for player, data in users.items(): hand = data['hand'] # 补空格到最长长度 disp_hand = f'{player.ljust(max_name_len)}: ¦' for card in hand: disp_hand += f'[{card}]' disp_hand += '¦' print(disp_hand)
为什么这两种方法更好
- 不需要修改原始字典的键,避免影响后续对用户数据的操作
- 代码更简洁,省去了手动循环拼接空格的冗余步骤
- 都是Python原生支持的功能,可读性和维护性更强
内容的提问来源于stack exchange,提问作者MuteKn0wM0RE
相关产品推荐
相关产品推荐

