Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình tạo tên tệp duy nhất bằng Python

Cho mảng names chứa n chuỗi. Tạo n thư mục lần lượt theo names[i]. Nếu tên bị trùng, hệ thống tự động thêm hậu tố (k) với k nhỏ nhất sao cho tên mới duy nhất. Trả về mảng tên thực tế được gán.

Ví dụ: names = ["my_dir","my_dir(1)","my_new_dir","my_new_dir","abc"] → ["my_dir", "my_dir(1)", "my_new_dir", "my_new_dir(1)", "abc"].

Thuật toán giải quyết

  • Sử dụng defaultdict(int) dic để lưu số lần đã dùng tên.
  • Duyệt từng name:
    • Nếu name chưa có trong dic: dic[name] = 1, thêm name vào kết quả.
    • Ngược lại: tạo newname = name + "(" + dic[name] + ")". Tăng dic[name] cho đến khi newname chưa có trong dic. Đặt dic[newname] = 1, thêm newname vào kết quả.

Ví dụ triển khai

from collections import defaultdict

def solve(names):
    dic = defaultdict(int)
    res = []
    for name in names:
        if name not in dic:
            dic[name] += 1
            res.append(name)
        else:
            newname = name + '(' + str(dic[name]) + ')'
            while newname in dic:
                dic[name] += 1
                newname = name + '(' + str(dic[name]) + ')'
            dic[newname] = 1
            res.append(newname)
    return res

names = ["my_dir","my_dir(1)","my_new_dir","my_new_dir","abc"]
print(solve(names))

Đầu vào

["my_dir","my_dir(1)","my_new_dir","my_new_dir","abc"]

Đầu ra

['my_dir', 'my_dir(1)', 'my_new_dir', 'my_new_dir(1)', 'abc']