簡體   English   中英

在for循環Python中的if語句中將一個鍵的值分配給另一個鍵

[英]Assign a value of one key to another key in if statement within for loop Python

我在 Python 中有一個字典列表。 我遍歷每個字典並檢查給定的鍵是否存在。 如果它確實存在,我檢查這個鍵的值是否為空,如果它是空的,那么我需要在那個空鍵中保存另一個鍵的值。 無法弄清楚如何將一個鍵的值分配給另一個鍵...

我的數據如下所示:

my_dicts = [{"Id": "123", "Campaign_Date": "2020-06-30", "Another_Date": "2020-07-01"}, {"Id": "125", "Campaign_Date": "", "Another_Date": "2020-07-01"}]

output 應該是這樣的:

my_dicts = [{"Id": "123", "Campaign_Date": "2020-06-30", "Another_Date": "2020-07-01"}, {"Id": "125", "Campaign_Date": "2020-07-01", "Another_Date": "2020-07-01"}]

我嘗試了以下方法:

for my_dict in my_dicts:
    for key in my_dict.items():
        campaign_key = 'Campaign_Date'
        if key == campaign_key:
            if value == "":
                value = value["Another_Date"] 
        else:
            continue

以防萬一您不想更新原始字典並同時對新字典進行必要的更正。

import copy
#my_dicts = [{"Id": "123", "Campaign_Date": "2020-06-30", "Another_Date": "2020-07-01"}, {"Id": "125", "Campaign_Date": "", "Another_Date": "2020-07-01"}]
# New input
my_dicts = [{"Id": "123", "Campaign_Date": "2020-06-30", "Another_Date": "2020-07-01"}, {"Id": "125", "Campaign_Date": "", "Another_Date": "2020-07-01"}, {"Id": "126", "Another_Date": "2020-07-01"}]

my_new_list = copy.deepcopy(my_dicts)

campaign_key = 'Campaign_Date'
for index, my_dict in enumerate(my_new_list):
    # check if "campaign_key" key exists
    if campaign_key in my_dict.keys():
        # Check for empty or null value for key "campaign_key"
        if my_dict[campaign_key] in ["", None]:
            my_dict['Campaign_Date'] = my_dict["Another_Date"]
    else:
        # if key "campaign_key" doesn't exist delete that item from list
        my_new_list.pop(index)

print(my_dicts)
print(my_new_list)
expected_output = [{'Id': '123', 'Campaign_Date': '2020-06-30', 'Another_Date': '2020-07-01'}, {'Id': '125', 'Campaign_Date': '2020-07-01', 'Another_Date': '2020-07-01'}]
if my_new_list == expected_output:
    print("Success")

Output:

[{'Id': '123', 'Campaign_Date': '2020-06-30', 'Another_Date': '2020-07-01'}, {'Id': '125', 'Campaign_Date': '', 'Another_Date': '2020-07-01'}, {'Id': '126', 'Another_Date': '2020-07-01'}]
[{'Id': '123', 'Campaign_Date': '2020-06-30', 'Another_Date': '2020-07-01'}, {'Id': '125', 'Campaign_Date': '2020-07-01', 'Another_Date': '2020-07-01'}]
Success
for my_dict in my_dicts:
    for key in my_dict.items():
        campaign_key = 'Campaign_Date'
        if key == campaign_key:
            if value = "":
                my_dict['Campaign_Date'] = my_dict["Another_Date"] 
        else:
            continue

不確定它是否在您正在運行的代碼中,但您提供的代碼中存在錯誤。

for my_dict in my_dicts:
    for key in my_dict.items():
        campaign_key = 'Campaign_Date'
        if key == campaign_key:
            if value = "": # This should be == otherwise you're assigning value to ""
                value = value["Another_Date"] # value["Another_Date"] Doesn't exist
                # Also this won't put the value into the dictionary
        else:
            continue
for my_dict in my_dicts:
    for key, value in my_dict.items():
        if key == 'Campaign_Date' and value == "":
           value = my_dict["Another_Date"]

請注意,這不會更新您的字典。 為此,將value = my_dict["Another_Date"]替換為my_dict.update({'Campaign_Date':my_dict["Another_Date"]})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM