Tôi quan tâm đến việc sử dụng một dict tùy ý và sao chép nó vào một dict mới, biến đổi nó trên đường đi.Yêu cầu "có thể băm" về giá trị Python
Một đột biến mà tôi muốn làm là trao đổi khóa và giá trị. Thật không may, một số giá trị là dicts ở bên phải của riêng họ. Tuy nhiên, điều này tạo ra một lỗi "unhashable type: 'dict'". Tôi không thực sự tâm trí chỉ việc xâu chuỗi giá trị và cho nó chìa khóa. Nhưng, tôi muốn để có thể làm điều gì đó như thế này:
for key in olddict:
if hashable(olddict[key]):
newdict[olddict[key]] = key
else
newdict[str(olddict[key])] = key
Có cách nào sạch để làm điều này mà không liên quan đến bẫy một ngoại lệ và phân tích các chuỗi thông điệp cho "loại unhashable" ?
Điều này có hoạt động nếu một bộ chứa danh sách/từ điển không? –
Không, và đây là thứ bạn chỉ có thể xác định tại thời gian chạy kể từ trước khi nội dung của danh sách nói chung là không xác định. 'hash (([],))' cho 'TypeError: kiểu không thể loại bỏ: 'list'' – Syncopated
Cảnh báo nhỏ cho những người sử dụng Python 2.7' isinstance (bytearray ([0xa]), collections.Hashable)) 'trả về' True' nhưng 'hash (bytearray ([0xa]))' không thành công với 'TypeError: loại không thể loại bỏ: 'bytearray''. – RedX