แก้ไขแล้ว: เปลี่ยนชื่อรายการที่ซ้ำกันในรายการ python

การเปลี่ยนชื่อรายการที่ซ้ำกันในรายการอาจเป็นปัญหาที่แก้ไขได้ยาก เนื่องจากคุณจะต้องระบุรายการที่ซ้ำกัน แล้วตัดสินใจว่าจะเปลี่ยนชื่ออย่างไร สิ่งนี้อาจท้าทายเป็นพิเศษหากรายการมีองค์ประกอบจำนวนมากหรือหากองค์ประกอบเป็นวัตถุที่ซับซ้อน นอกจากนี้ การเปลี่ยนชื่อซ้ำอาจทำให้คุณต้องแก้ไขส่วนอื่นๆ ของโค้ดที่ใช้ชื่อเดิมขององค์ประกอบเพื่อให้ทำงานได้อย่างถูกต้องต่อไป

def rename_duplicates(lst): 
    seen = set() 
    new_lst = [] 

    for item in lst: 
        if item not in seen: 
            seen.add(item) 
            new_lst.append(item) 
        else: 
            new_item = item + '_1'   # append a suffix to make it unique  

            while new_item in seen:   # increment the suffix until it's unique  
                suffix = int(new_item.split('_')[-1]) + 1   # get the last number and add one to it  
                new_item = '{}_{}'.format('_'.join(new_item.split('_')[:-1]), suffix)

            seen.add(new_item)     # add the newly created item to the set of seen items  
            new_lst.append(new_item)     # append the newly created item to the list

    return new

_lst

# รหัสนี้กำหนดฟังก์ชันที่เรียกว่า rename_duplicates ที่ใช้ในรายการเป็นอาร์กิวเมนต์
def rename_duplicates (lst):

# จากนั้นจะสร้างชุดว่างที่เรียกว่า sawed และรายการว่างที่เรียกว่า new_lst
เห็น = set()
ใหม่_lst = []

# จากนั้นวนซ้ำผ่านรายการในรายการและตรวจสอบว่าพวกเขาอยู่ในชุดของรายการที่เห็นหรือไม่
สำหรับรายการใน lst:
ถ้าไม่เห็นรายการ: # ถ้าไม่เห็น จะเพิ่มเข้าไปในชุดของรายการที่เห็นและต่อท้ายรายการใหม่
saw.add(รายการ)
new_lst.append(item) # ถ้ามี จะเป็นการสร้างเวอร์ชันเฉพาะของไอเท็มนั้นโดยเพิ่มคำต่อท้าย (เช่น '_1') ต่อท้ายชื่อ และตรวจสอบว่าไอเท็มที่สร้างขึ้นใหม่นี้อยู่ในชุดของไอเท็มที่เห็นหรือไม่

อื่น: # ถ้าใช่ มันจะเพิ่มส่วนต่อท้ายจนกว่าจะพบเวอร์ชันที่ไม่ได้ใช้ของชื่อรายการนั้น และเพิ่มรายการที่สร้างขึ้นใหม่นี้ให้กับทั้งชุดของรายการที่เห็นและในรายการใหม่ก่อนที่จะส่งคืนรายการใหม่นี้เมื่อสิ้นสุดการดำเนินการ

new_item = รายการ + '_1'

ในขณะที่เห็น new_item: # เพิ่มส่วนต่อท้ายจนกว่าจะไม่ซ้ำกัน

suffix = int(new_item.split('_')[-1]) + 1 # รับหมายเลขสุดท้ายและเพิ่มเข้าไป

new_item = '{}_{}'.format('_'.join(new_item.split('_')[:-1]), ต่อท้าย)

saw.add(ใหม่

รายการใน Python

รายการใน Python เป็นหนึ่งในโครงสร้างข้อมูลที่ใช้บ่อยที่สุด ใช้เพื่อจัดเก็บคอลเลกชันของรายการซึ่งอาจเป็นประเภทใดก็ได้ รวมถึงรายการอื่นๆ รายการไม่แน่นอน หมายความว่าสามารถเปลี่ยนแปลงได้หลังจากสร้างแล้ว นอกจากนี้ยังรองรับการดำเนินการต่างๆ เช่น การจัดทำดัชนี การแบ่งส่วน และการต่อข้อมูล

ในการสร้างรายการใน Python ให้ใช้เครื่องหมายวงเล็บเหลี่ยมและคั่นแต่ละรายการด้วยเครื่องหมายจุลภาค:

my_list = [1, 2, 3]

คุณสามารถเข้าถึงแต่ละองค์ประกอบในรายการโดยใช้ดัชนี:
my_list[0] # คืนค่า 1
my_list[1] # คืนค่า 2
my_list[2] # คืนค่า 3

คุณยังสามารถใช้ดัชนีเชิงลบเพื่อเข้าถึงองค์ประกอบจากส่วนท้ายของรายการ:

my_list[-1] # ส่งคืน 3 (องค์ประกอบสุดท้าย)

คุณสามารถเพิ่มรายการในรายการโดยใช้วิธีการผนวก () :

my_list.append(4) # เพิ่ม 4 ที่ส่วนท้ายของรายการ

คุณสามารถลบรายการออกจากรายการโดยใช้เมธอด remove() หรือ pop() อย่างใดอย่างหนึ่ง:

my_list.remove(3) # ลบ 3 ออกจากรายการ

my_list.pop(2) # ลบและส่งคืน 2 (องค์ประกอบที่สาม) จากรายการ

เปลี่ยนชื่อซ้ำในรายการใน Python

การเปลี่ยนชื่อซ้ำในรายการใน Python เป็นงานทั่วไปเมื่อจัดการกับรายการ มันเกี่ยวข้องกับการแทนที่องค์ประกอบที่ซ้ำกันในรายการด้วยค่าที่ไม่ซ้ำใคร ซึ่งสามารถทำได้โดยใช้ฟังก์ชัน set() ซึ่งจะลบองค์ประกอบที่ซ้ำกันทั้งหมดออกจากรายการ และส่งกลับรายการใหม่ที่มีเฉพาะองค์ประกอบที่ไม่ซ้ำกัน นอกจากนี้ยังสามารถใช้ฟังก์ชัน set() เพื่อเปลี่ยนชื่อรายการที่ซ้ำกันได้ด้วยการแมปค่าเก่ากับค่าใหม่ ตัวอย่างเช่น หากคุณมีรายการตัวเลขและต้องการแทนที่รายการที่ซ้ำกันทั้งหมดด้วยช่องสี่เหลี่ยมตามลำดับ คุณสามารถใช้รหัสต่อไปนี้:

# สร้างพจนานุกรมที่ว่างเปล่า
การทำแผนที่ = {}

#วนซ้ำรายการเดิม
สำหรับรายการใน my_list:
# ตรวจสอบว่ามีรายการอยู่ในพจนานุกรมหรือไม่
หากรายการไม่อยู่ในการจับคู่:
# ถ้าไม่ใช่ ให้เพิ่มลงในพจนานุกรมและกำหนดค่าสี่เหลี่ยมจัตุรัสให้เป็นค่า
การทำแผนที่ [รายการ] = รายการ * รายการ

# สร้างรายการผลลัพธ์ที่ว่างเปล่า
result_list = []

# วนซ้ำรายการเดิมอีกครั้งและแทนที่แต่ละองค์ประกอบด้วยกำลังสองจากพจนานุกรมสำหรับ i ใน my_list: result_list.append(mapping[i])

# พิมพ์ผลการพิมพ์ (result_list)

กระทู้ที่เกี่ยวข้อง:

แสดงความคิดเห็น