如何通过删除重复项将 Python 字典转换为简单的字符串值

问题描述 投票:0回答:1

我正在尝试将字典列表转换为简单的逗号分隔字符串,并删除重复的键。

这是我的字典

"Message": [
    {
        "table_name": "sec_sp",
        "column_name": "field_1"
    },
    {
        "table_name": "sec_sp",
        "column_name": "field_2"
    },
    {
        "table_name": "sec_si",
        "column_name": "field_3"
    },
    {
        "table_name": "sec_si",
        "column_name": "field_4"
    },
    {
        "table_name": "sec_sp",
        "column_name": "field_5"
    },
    {
        "table_name": "sec_sc",
        "column_name": "field_6"
    },
    {
        "table_name": "sec_sc",
        "column_name": "field_7"
    }
]

我想将其转换为以下字符串。

sp_list = "field_1,field_2,field_5"
si_list = "field_3,field_4"
sc_list = "field_6,field_7"

我尝试使用下面的代码将键和值分开,但无法删除重复项。

for key, value in Message.items():
python dataframe dictionary
1个回答
0
投票

由于数据格式是列表而不是直接的字典,因此您需要迭代列表,根据 table_name 将项目收集到单独的列表中,然后将这些列表连接到字符串中。

message = [
    {"table_name": "sec_sp", "column_name": "field_1"},
    {"table_name": "sec_sp", "column_name": "field_2"},
    {"table_name": "sec_si", "column_name": "field_3"},
    {"table_name": "sec_si", "column_name": "field_4"},
    {"table_name": "sec_sp", "column_name": "field_5"},
    {"table_name": "sec_sc", "column_name": "field_6"},
    {"table_name": "sec_sc", "column_name": "field_7"}
]

# Using a dictionary to collect column names for each table
columns_by_table = {}

# Iterate over each entry in the message
for entry in message:
    table = entry["table_name"]
    column = entry["column_name"]
    if table not in columns_by_table:
        columns_by_table[table] = []
    # Add the column name to the corresponding table's list
    columns_by_table[table].append(column)

sp_list = ",".join(columns_by_table.get("sec_sp", []))
si_list = ",".join(columns_by_table.get("sec_si", []))
sc_list = ",".join(columns_by_table.get("sec_sc", []))

print(f"sp_list = \"{sp_list}\"")
print(f"si_list = \"{si_list}\"")
print(f"sc_list = \"{sc_list}\"")

希望这对你有一点帮助。

© www.soinside.com 2019 - 2024. All rights reserved.