为何Python字典仅显示最后一个键值对?技术咨询
问题原因与解决办法
问题根源
Python字典的键具有唯一性,你在my_constraint中重复定义了constraint_class、table_name、constraint_parameters这三个键。当字典里出现重复键时,后面的键值对会直接覆盖前面的,所以最终打印时只会保留最后一组键值。
修正方案
你需要把多个约束存储为字典的列表,这样每个约束都是独立的字典,不会被覆盖。修改后的代码如下:
my_constraints = [ { 'constraint_class': 'FixedCombinations', 'table_name': 'DIM_SITE', # for multi table synthesizers 'constraint_parameters': { 'column_names': ['SITE_NAME2', 'COUNTRY', 'CITY', 'LANDCODE', 'REGION' ] } }, { 'constraint_class': 'FixedCombinations', 'table_name': 'REPORT_ASSET_PROBLEMS_ULT_AUTOMATE', # for multi table synthesizers 'constraint_parameters': { 'column_names': ['ASSET_TYPE', 'ASSET_NAME', 'PROBLEM', 'SOLUTION'] } }, { 'constraint_class': 'FixedCombinations', 'table_name': 'REPORT_ASSET_STATUS_REPORT', # for multi table synthesizers 'constraint_parameters': { 'column_names': ['ASSET_TYPE', 'ASSET_NAME', 'PROBLEM', 'SOLUTION'] } }, { 'constraint_class': 'FixedCombinations', 'table_name': 'SITE', # for multi table synthesizers 'constraint_parameters': { 'column_names': ['LANDCODE', 'COUNTRY', 'CITY', 'REGION'] } }, { 'constraint_class': 'FixedCombinations', 'table_name': '', # for multi table synthesizers 'constraint_parameters': { 'column_names': ['LEVEL', 'COMPONENT', 'COMPONENT_NAME', 'KPI', 'CWR', 'CR'] } } ] # 打印所有约束 for item in my_constraints: print(item)
效果说明
修改后,每个约束都是列表中的独立元素,不会被覆盖。通过遍历列表打印,你可以清晰看到每一组约束的内容,方便验证更新是否正确。
内容的提问来源于stack exchange,提问作者Geert Van Der Weide
相关产品推荐
相关产品推荐

