Đã thấy một số câu trả lời cho các câu hỏi tương tự nhưng không có chức năng tích hợp/từ điển nhiều mục nhập. Giả sử tôi có một từ điển chứa các tham số bản đồ cơ sở cho các phép chiếu bản đồ khác nhau;
Miền = {'TPCentral':["projection='geos',lon_0=-160,lat_0=0,solution='l'"],
'Thế giới':["projection='robin',lon_0=0"]}
Tôi muốn gọi hàm sơ đồ cơ sở (từ maplotlib) để
m = Sơ đồ cơ sở(Miền['TPCentral'])
Bằng cách này, chức năng của nó tương đương với;
m = Sơ đồ cơ sở(chiếu='địa lý',lon_0=-160,lat_0=0,độ phân giải='l')
Vấn đề là điều này chuyển nó thành một chuỗi dài, không biết cách chia nó thành các tham số riêng biệt (thử sử dụng *). Cảm ơn trước!
["chiếu='geos',lon_0=-160,lat_0=0,độ phân giải='l'"]
là một danh sách chứa một chuỗi đơn. Sử dụng giải nén trên đó sẽ tạo ra một danh sách các ký tự - gần như chắc chắn lớn hơn nhiều so với số lượng đối số của bạn và chắc chắn không phải là các đối số bạn muốn gửi. Tốt hơn hết bạn nên sử dụng từ điển để giữ các giá trị sau:
'TPCentral': {
'phép chiếu': 'địa lý',
'lon_0': -160,
'lat_0': 0,
'độ phân giải': 'l'}
Sau đó giải nén với các đối số từ khóa:
m = Sơ đồ cơ sở(**Miền['TPCentral'])
Nếu bạn buộc phải thực hiện định dạng này, bạn có thể thực hiện một số thao tác với chuỗi, như
pair = [x.split('=') cho x trong Miền['TPCentral'][0].split(',')]
Tên miền['TPCentral'] = {k: eval(v) for k, v theo cặp}
Tôi là một lập trình viên xuất sắc, rất giỏi!