Tôi muốn thay đổi khóa của một mục trong từ điển Python.
Có một cách đơn giản để làm điều này?
Tôi muốn thay đổi khóa của một mục trong từ điển Python.
Có một cách đơn giản để làm điều này?
Câu trả lời:
Dễ dàng thực hiện trong 2 bước:
dictionary[new_key] = dictionary[old_key]
del dictionary[old_key]
Hoặc trong 1 bước:
dictionary[new_key] = dictionary.pop(old_key)
Nó sẽ tăng KeyError
nếu dictionary[old_key]
không được xác định. Lưu ý rằng điều này sẽ xóa dictionary[old_key]
.
>>> dictionary = { 1: 'one', 2:'two', 3:'three' }
>>> dictionary['ONE'] = dictionary.pop(1)
>>> dictionary
{2: 'two', 3: 'three', 'ONE': 'one'}
>>> dictionary['ONE'] = dictionary.pop(1)
Traceback (most recent call last):
File "<input>", line 1, in <module>
KeyError: 1
dict[new_value] = dict.pop(old_value, some_default_value)
để tránh điều đó
old_key
sẽ khác với vị trí của new_key
.
nếu bạn muốn thay đổi tất cả các phím:
d = {'x':1, 'y':2, 'z':3}
d1 = {'x':'a', 'y':'b', 'z':'c'}
In [10]: dict((d1[key], value) for (key, value) in d.items())
Out[10]: {'a': 1, 'b': 2, 'c': 3}
nếu bạn muốn thay đổi khóa đơn: Bạn có thể đi với bất kỳ đề xuất nào ở trên.
{ d1[key] : value for key, value in d.items() }
Trong python 2.7 trở lên, bạn có thể sử dụng khả năng hiểu từ điển: Đây là một ví dụ tôi gặp trong khi đọc CSV bằng DictReader. Người dùng đã nhập vào tất cả các tên cột bằng ':'
ori_dict = {'key1:' : 1, 'key2:' : 2, 'key3:' : 3}
để thoát khỏi dấu vết ':' trong các phím:
corrected_dict = { k.replace(':', ''): v for k, v in ori_dict.items() }
Vì các khóa là những gì mà từ điển sử dụng để tra cứu các giá trị, bạn thực sự không thể thay đổi chúng. Điều gần nhất bạn có thể làm là lưu giá trị được liên kết với khóa cũ, xóa nó, sau đó thêm một mục mới với khóa thay thế và giá trị đã lưu. Một số câu trả lời khác minh họa những cách khác nhau có thể được thực hiện.
Để chuyển đổi tất cả các khóa trong từ điển
Giả sử đây là từ điển của bạn:
>>> sample = {'person-id': '3', 'person-name': 'Bob'}
Để chuyển đổi tất cả các dấu gạch ngang thành dấu gạch dưới trong khóa từ điển mẫu:
>>> sample = {key.replace('-', '_'): sample.pop(key) for key in sample.keys()}
>>> sample
>>> {'person_id': '3', 'person_name': 'Bob'}
d = {1:2,3:4}
giả sử rằng chúng tôi muốn thay đổi các khóa thành các thành phần danh sách p = ['a', 'b']. đoạn mã sau sẽ làm:
d=dict(zip(p,list(d.values())))
và chúng tôi nhận được
{'a': 2, 'b': 4}
Trong trường hợp thay đổi tất cả các phím cùng một lúc. Ở đây tôi đang bắt nguồn từ các phím.
a = {'making' : 1, 'jumping' : 2, 'climbing' : 1, 'running' : 2}
b = {ps.stem(w) : a[w] for w in a.keys()}
print(b)
>>> {'climb': 1, 'jump': 2, 'make': 1, 'run': 2} #output
Tôi chưa thấy câu trả lời chính xác này:
dict['key'] = value
Bạn thậm chí có thể làm điều này với các thuộc tính đối tượng. Biến chúng thành một cuốn từ điển bằng cách làm điều này:
dict = vars(obj)
Sau đó, bạn có thể thao tác các thuộc tính đối tượng như từ điển:
dict['attribute'] = value