Hướng dẫn can you have two of the same keys in a dictionary python? - bạn có thể có hai khóa giống nhau trong python từ điển không?

Trong bài viết này, chúng tôi sẽ tìm hiểu xem một từ điển có các khóa trùng lặp hay không trong Python.

Câu trả lời thẳng là không. Bạn không thể có các khóa trùng lặp trong một từ điển trong Python. Nhưng chúng ta có thể có một hiệu ứng tương tự như giữ các khóa trùng lặp trong từ điển. Chúng ta cần hiểu lý do đằng sau câu hỏi này và làm thế nào chúng ta có thể đạt được các khóa trùng lặp trong Python.

Bạn không thể có các khóa trùng lặp trong Python, nhưng bạn có thể có nhiều giá trị liên quan đến một khóa trong Python. Nếu bạn muốn giữ các khóa trùng lặp trong từ điển, bạn có hai hoặc nhiều giá trị khác nhau mà bạn muốn liên kết với cùng một khóa trong từ điển. Từ điển không thể có cùng các khóa, nhưng chúng ta có thể đạt được hiệu ứng tương tự bằng cách giữ nhiều giá trị cho một khóa trong từ điển.

Hãy để hiểu với một ví dụ,

Giả sử chúng ta có một từ điển tên và số điện thoại,

Quảng cáo

# Dictionary of names and phone numbers
phone_details = {   'Mathew': 212323,
                    'Ritika': 334455,
                    'John'  : 345323 }

Đến bây giờ, mỗi tên [khóa] có một số điện thoại được liên kết với nó. Nhưng giả sử, John John có thêm hai số điện thoại và chúng tôi cũng muốn thêm chúng vào từ điển. Là chìa khóa ‘John, đã tồn tại trong từ điển, vì vậy nếu chúng ta cố gắng thêm hai cặp giá trị khóa với cùng một khóa như thế này,

phone_details['John'] = 111223
phone_details['John'] = 333444

HOẶC

phone_details.update[{ 'John' : 111223}]
phone_details.update[{ 'John' : 333444}]

Nó sẽ cập nhật giá trị của khóa hiện có ‘John, tức là.

Mathew  -  212323
Ritika  -  334455
John  -  333444 

Để tránh loại vấn đề này, chúng ta có thể gán nhiều giá trị cho một khóa duy nhất. Như thế này,

Mathew  -  212323
Ritika  -  334455
John  -  [345323, 111223, 333444]

Thêm nhiều giá trị cho một khóa trong từ điển trong Python

Thay vì chèn khóa trùng lặp, chúng ta có thể thay đổi loại giá trị thành danh sách và gán thêm các giá trị cho nó.

Hãy để xem một ví dụ,

def add_value[dict_obj, key, value]:
    ''' Adds a key-value pair to the dictionary.
        If the key already exists in the dictionary, 
        it will associate multiple values with that 
        key instead of overwritting its value'''
    if key not in dict_obj:
        dict_obj[key] = value
    elif isinstance[dict_obj[key], list]:
        dict_obj[key].append[value]
    else:
        dict_obj[key] = [dict_obj[key], value]


# Dictionary of names and phone numbers
phone_details = {   'Mathew': 212323,
                    'Ritika': 334455,
                    'John'  : 345323 }

# Append a value to the existing key 
add_value[phone_details, 'John', 111223]
# Append a value to the existing key
add_value[phone_details, 'John', 333444]

for key, value in phone_details.items[]:
    print[key, ' - ', value]

Đầu ra

Mathew  -  212323
Ritika  -  334455
John  -  [345323, 111223, 333444]

Ở đây chúng tôi đã tạo một hàm add_value [] thêm một cặp giá trị khóa vào từ điển. Nếu khóa đã tồn tại trong từ điển, nó sẽ liên kết nhiều giá trị với khóa đó thay vì ghi đè giá trị của nó. Nó theo logic này.

  • Nếu khóa không tồn tại, sau đó thêm cặp giá trị khóa.
  • Nếu chính tồn tại trong từ điển và loại giá trị không phải là danh sách. Sau đó tạo một danh sách tạm thời và thêm các giá trị cũ và mới cho nó. Sau đó gán đối tượng danh sách làm giá trị cho khóa trong từ điển.
  • Nếu chính tồn tại trong từ điển và loại giá trị là một danh sách. Sau đó thêm giá trị mới vào danh sách.

Vì vậy, đây là cách chúng ta có thể có các khóa trùng lặp trong từ điển, tức là, bằng cách thêm nhiều giá trị cho cùng một khóa trong từ điển trong Python.

Tôi có danh sách sau đây chứa các số đăng ký xe trùng lặp với các giá trị khác nhau.Tôi muốn chuyển đổi nó thành một từ điển chấp nhận nhiều khóa đăng ký xe hơi này.

Cho đến nay khi tôi cố gắng chuyển đổi danh sách thành từ điển, nó sẽ loại bỏ một trong các phím.Làm cách nào để tạo một từ điển với các khóa trùng lặp?

Danh sách là:

EDF768, Bill Meyer, 2456, Vet_Parking
TY5678, Jane Miller, 8987, AgHort_Parking
GEF123, Jill Black, 3456, Creche_Parking
ABC234, Fred Greenside, 2345, AgHort_Parking
GH7682, Clara Hill, 7689, AgHort_Parking
JU9807, Jacky Blair, 7867, Vet_Parking
KLOI98, Martha Miller, 4563, Vet_Parking
ADF645, Cloe Freckle, 6789, Vet_Parking
DF7800, Jacko Frizzle, 4532, Creche_Parking
WER546, Olga Grey, 9898, Creche_Parking
HUY768, Wilbur Matty, 8912, Creche_Parking
EDF768, Jenny Meyer, 9987, Vet_Parking
TY5678, Jo King, 8987, AgHort_Parking
JU9807, Mike Green, 3212, Vet_Parking

Mã tôi đã thử là:

data_dict = {}
data_list = []

def createDictionaryModified[filename]:
  path = "C:\Users\user\Desktop"
  basename = "ParkingData_Part3.txt"
  filename = path + "//" + basename
  file = open[filename]
  contents = file.read[]
  print contents,"\n"
  data_list = [lines.split[","] for lines in contents.split["\n"]]
  for line in data_list:
    regNumber = line[0]
    name = line[1]
    phoneExtn = line[2]
    carpark = line[3].strip[]
    details = [name,phoneExtn,carpark]
    data_dict[regNumber] = details
  print data_dict,"\n"
  print data_dict.items[],"\n"
  print data_dict.values[]

2 khóa có thể có cùng giá trị trong từ điển không?

Không, mỗi khóa trong một từ điển phải là duy nhất.Bạn không thể có hai khóa có cùng giá trị.You can't have two keys with the same value.

Từ điển có thể có khóa lặp lại?

Câu trả lời thẳng là không.Bạn không thể có các khóa trùng lặp trong một từ điển trong Python.Nhưng chúng ta có thể có một hiệu ứng tương tự như giữ các khóa trùng lặp trong từ điển.You can not have duplicate keys in a dictionary in Python. But we can have a similar effect as keeping duplicate keys in dictionary.

Có thể có những bản sao trong một python từ điển?

Từ điển Python không cho phép khóa lặp lại..

Bài Viết Liên Quan

Chủ Đề