Python tạo từ điển từ danh sách khóa và giá trị

Hầu hết mọi loại giá trị đều có thể được sử dụng làm khóa từ điển trong Python. Bạn thậm chí có thể sử dụng các đối tượng tích hợp sẵn như kiểu và hàm. Tuy nhiên, có một số hạn chế mà các khóa từ điển phải tuân theo

Đầu tiên, một khóa nhất định chỉ có thể xuất hiện trong từ điển một lần. Khóa trùng lặp không được phép. Từ điển ánh xạ mỗi khóa thành một giá trị tương ứng, vì vậy sẽ không hợp lý khi ánh xạ một khóa cụ thể nhiều lần. Nếu bạn chỉ định một khóa lần thứ hai trong quá trình tạo từ điển lần đầu, thì lần xuất hiện thứ hai sẽ ghi đè lần đầu tiên

Thứ hai, khóa từ điển phải thuộc loại không thay đổi. Ví dụ: bạn có thể sử dụng số nguyên, số float, chuỗi hoặc Boolean làm khóa từ điển. Tuy nhiên, cả danh sách và từ điển khác đều không thể đóng vai trò là khóa từ điển vì danh sách và từ điển có thể thay đổi. Mặt khác, các giá trị có thể là bất kỳ loại nào và có thể được sử dụng nhiều lần

Joshua Dougas trên

Tôi đã rất ngạc nhiên khi thông báo lỗi cho các khóa danh sách hoàn toàn không đề cập đến khả năng thay đổi

Tôi đã chơi xung quanh và thấy rằng các đối tượng có thể thay đổi thực sự hoạt động như các khóa, miễn là đối tượng có thể băm được. Chúng ta có thể tạo một danh sách hậu duệ có thể băm được bằng cách triển khai phương thức hash[] bằng cách sử dụng một số sơ đồ tùy ý

Tôi đã làm điều này bên dưới và thấy rằng các đối tượng có thể thay đổi trên thực tế hoạt động như các khóa từ điển, chỉ là việc sử dụng các khóa có thể thay đổi có thể dẫn đến kết quả không mong muốn

Ví dụ: nếu bạn thêm một mục bằng khóa có thể thay đổi và sau đó thay đổi khóa không thể đảo ngược, thì bạn có nguy cơ 'mất' giá trị được liên kết. Tôi chắc chắn rằng có một loạt các cảnh báo khác, chẳng hạn như va chạm, cũng như

Cấu trúc bảng băm khóa/giá trị hiệu quả của Python được gọi là "dict". Nội dung của một dict có thể được viết dưới dạng một chuỗi key. cặp giá trị trong dấu ngoặc nhọn { }, e. g. chính tả = {key1. giá trị1, khóa2. giá trị2,. }. "Chính tả trống" chỉ là một cặp dấu ngoặc nhọn trống {}

Tra cứu hoặc thiết lập giá trị trong lệnh sử dụng dấu ngoặc vuông, e. g. dict['foo'] tra cứu giá trị trong khóa 'foo'. Các chuỗi, số và bộ dữ liệu hoạt động như các khóa và bất kỳ loại nào cũng có thể là một giá trị. Các loại khác có thể hoặc không thể hoạt động chính xác như các khóa [chuỗi và bộ dữ liệu hoạt động rõ ràng vì chúng không thay đổi]. Tra cứu một giá trị không có trong chính tả sẽ đưa ra Lỗi Key -- sử dụng "in" để kiểm tra xem khóa có trong chính tả hay sử dụng dict. get[key] trả về giá trị hoặc Không có nếu không có khóa [hoặc get[key, not-found] cho phép bạn chỉ định giá trị nào sẽ trả về trong trường hợp không tìm thấy]

  ## Can build up a dict by starting with the the empty dict {}
  ## and storing key/value pairs into the dict like this:
  ## dict[key] = value-for-that-key
  dict = {}
  dict['a'] = 'alpha'
  dict['g'] = 'gamma'
  dict['o'] = 'omega'

  print[dict] ## {'a': 'alpha', 'o': 'omega', 'g': 'gamma'}

  print[dict['a']]     ## Simple lookup, returns 'alpha'
  dict['a'] = 6       ## Put new key/value into dict
  'a' in dict         ## True
  ## print[dict['z']]                  ## Throws KeyError
  if 'z' in dict: print[dict['z']]     ## Avoid KeyError
  print[dict.get['z']]  ## None [instead of KeyError]

Theo mặc định, vòng lặp for trên từ điển sẽ lặp lại các khóa của nó. Các phím sẽ xuất hiện theo thứ tự tùy ý. Các phương pháp dict. keys[] và dict. các giá trị [] trả về danh sách các khóa hoặc giá trị một cách rõ ràng. Ngoài ra còn có một items[] trả về danh sách các bộ dữ liệu [khóa, giá trị], đây là cách hiệu quả nhất để kiểm tra tất cả dữ liệu giá trị khóa trong từ điển. Tất cả các danh sách này có thể được chuyển đến hàm sorted[]

  ## By default, iterating over a dict iterates over its keys.
  ## Note that the keys are in a random order.
  for key in dict: print[key]
  ## prints a g o
  
  ## Exactly the same as above
  for key in dict.keys[]: print[key]

  ## Get the .keys[] list:
  print[dict.keys[]]  ## dict_keys[['a', 'o', 'g']]

  ## Likewise, there's a .values[] list of values
  print[dict.values[]]  ## dict_values[['alpha', 'omega', 'gamma']]

  ## Common case -- loop over the keys in sorted order,
  ## accessing each key/value
  for key in sorted[dict.keys[]]:
    print[key, dict[key]]
  
  ## .items[] is the dict expressed as [key, value] tuples
  print[dict.items[]]  ##  dict_items[[['a', 'alpha'], ['o', 'omega'], ['g', 'gamma']]]

  ## This loop syntax accesses the whole dict by looping
  ## over the .items[] tuple list, accessing one [key, value]
  ## pair on each iteration.
  for k, v in dict.items[]: print[k, '>', v]
  ## a > alpha    o > omega     g > gamma

lưu ý chiến lược. từ quan điểm hiệu suất, từ điển là một trong những công cụ tuyệt vời nhất của bạn và bạn nên sử dụng nó khi có thể như một cách dễ dàng để tổ chức dữ liệu. Ví dụ: bạn có thể đọc tệp nhật ký trong đó mỗi dòng bắt đầu bằng một địa chỉ IP và lưu trữ dữ liệu vào một lệnh sử dụng địa chỉ IP làm khóa và danh sách các dòng xuất hiện dưới dạng giá trị. Khi bạn đã đọc toàn bộ tệp, bạn có thể tra cứu bất kỳ địa chỉ IP nào và ngay lập tức thấy danh sách các dòng của nó. Từ điển lấy dữ liệu rải rác và biến nó thành một thứ gì đó mạch lạc

Định dạng chính tả

Toán tử % hoạt động thuận tiện để thay thế các giá trị từ một lệnh thành một chuỗi theo tên

  h = {}
  h['word'] = 'garfield'
  h['count'] = 42
  s = 'I want %[count]d copies of %[word]s' % h  # %d for int, %s for string
  # 'I want 42 copies of garfield'

  # You can also use str.format[].
  s = 'I want {count:d} copies of {word}'.format[h]

Del

Toán tử "del" thực hiện thao tác xóa. Trong trường hợp đơn giản nhất, nó có thể loại bỏ định nghĩa của một biến, như thể biến đó chưa được định nghĩa. Del cũng có thể được sử dụng trên các thành phần hoặc lát danh sách để xóa phần đó của danh sách và xóa các mục từ từ điển

  var = 6
  del var  # var no more!
  
  list = ['a', 'b', 'c', 'd']
  del list[0]     ## Delete first element
  del list[-2:]   ## Delete last two elements
  print[list]      ## ['b']

  dict = {'a':1, 'b':2, 'c':3}
  del dict['b']   ## Delete 'b' entry
  print[dict]      ## {'a':1, 'c':3}

Các tập tin

Hàm open[] mở và trả về một phần xử lý tệp có thể được sử dụng để đọc hoặc ghi tệp theo cách thông thường. Mã f = open['name', 'r'] mở tệp vào biến f, sẵn sàng cho thao tác đọc và sử dụng f. close[] khi kết thúc. Thay vì 'r', hãy sử dụng 'w' để viết và 'a' để nối thêm. Vòng lặp for tiêu chuẩn hoạt động đối với tệp văn bản, lặp qua các dòng của tệp [điều này chỉ hoạt động đối với tệp văn bản, không phải tệp nhị phân]. Kỹ thuật vòng lặp for là một cách đơn giản và hiệu quả để xem tất cả các dòng trong tệp văn bản

  # Echo the contents of a text file
  f = open['foo.txt', 'rt', encoding='utf-8']
  for line in f:   ## iterates over the lines of the file
    print[line, end='']    ## end='' so print does not add an end-of-line char
                           ## since 'line' already includes the end-of-line.
  f.close[]

Đọc từng dòng một có chất lượng tốt mà không phải tất cả tệp đều cần vừa với bộ nhớ cùng một lúc -- tiện dụng nếu bạn muốn xem từng dòng trong tệp 10 gigabyte mà không cần sử dụng 10 gigabyte bộ nhớ. các f. readlines[] đọc toàn bộ tệp vào bộ nhớ và trả về nội dung của nó dưới dạng danh sách các dòng của nó. các f. read[] đọc toàn bộ tệp thành một chuỗi, đây có thể là một cách thuận tiện để xử lý toàn bộ văn bản cùng một lúc, chẳng hạn như với các biểu thức chính quy mà chúng ta sẽ thấy sau

Để viết, f. phương thức write[string] là cách dễ nhất để ghi dữ liệu vào tệp đầu ra đang mở. Hoặc bạn có thể sử dụng "print" với một tệp đang mở như "print[string, file=f]"

Tập tin Unicode

Để đọc và ghi các tệp được mã hóa unicode, hãy sử dụng chế độ `'t'` và chỉ định rõ ràng mã hóa

with open['foo.txt', 'rt', encoding='utf-8'] as f:
  for line in f:
    # here line is a *unicode* string
  
with open['write_test', encoding='utf-8', mode='wt'] as f:
    f.write['\u20ACunicode\u20AC\n'] #  €unicode€
    # AKA print['\u20ACunicode\u20AC', file=f]  ## which auto-adds end='\n'

Tập thể dục phát triển gia tăng

Xây dựng chương trình Python, đừng viết toàn bộ trong một bước. Thay vào đó chỉ xác định một cột mốc đầu tiên, e. g. "bước đầu tiên là trích xuất danh sách các từ. " Viết mã để đạt được cột mốc đó và chỉ cần in cấu trúc dữ liệu của bạn tại thời điểm đó, sau đó bạn có thể thực hiện kiểm tra hệ thống. exit[0] để chương trình không chạy tiếp vào phần chưa hoàn thành. Khi mã cột mốc đang hoạt động, bạn có thể làm việc với mã cho cột mốc tiếp theo. Việc có thể xem bản in các biến của bạn ở một trạng thái có thể giúp bạn suy nghĩ về cách bạn cần chuyển đổi các biến đó để chuyển sang trạng thái tiếp theo. Python rất nhanh với mẫu này, cho phép bạn thực hiện một thay đổi nhỏ và chạy chương trình để xem nó hoạt động như thế nào. Tận dụng sự quay vòng nhanh chóng đó để xây dựng chương trình của bạn theo từng bước nhỏ

Bài tập. số từ. py

Kết hợp tất cả các tài liệu Python cơ bản -- chuỗi, danh sách, ký tự, bộ dữ liệu, tệp -- hãy thử đếm từ tóm tắt. bài tập py trong phần Bài tập cơ bản

Làm cách nào để tạo dict từ danh sách khóa và giá trị trong Python?

Python Chuyển đổi danh sách thành từ điển .
mệnh lệnh. fromkeys[]. Được sử dụng để tạo một từ điển từ một danh sách. .
hiểu từ điển. Tạo một từ điển mới từ một danh sách hiện có. Bạn có thể chỉ định các giá trị khác nhau cho từng khóa trong từ điển. .
zip[]. Chuyển đổi hai hoặc nhiều danh sách thành một danh sách các bộ

Làm cách nào tôi có thể tạo một từ điển từ các danh sách khóa và giá trị riêng biệt?

Đối với điều này, chỉ cần khai báo một từ điển, sau đó chạy vòng lặp lồng nhau cho cả hai danh sách và gán các cặp khóa và giá trị từ các giá trị danh sách cho từ điển.

Làm cách nào để chuyển đổi dữ liệu danh sách thành từ điển trong Python?

Chuyển đổi danh sách thành từ điển bằng cách sử dụng Enumerate[] Bằng cách sử dụng enumerate[] , chúng ta có thể chuyển đổi danh sách thành từ điển với chỉ mục là khóa và mục danh sách là giá trị. enumerate[] sẽ trả về một đối tượng liệt kê. Chúng ta có thể chuyển đổi thành dict bằng hàm tạo dict[]

Làm cách nào để tạo từ điển từ danh sách Python?

Vì từ điển python không có thứ tự nên đầu ra có thể theo bất kỳ thứ tự nào. Để chuyển đổi danh sách thành từ điển, chúng ta có thể sử dụng khả năng hiểu danh sách và tạo khóa. cặp giá trị của các phần tử liên tiếp. Cuối cùng, gõ danh sách để gõ chính tả

Chủ Đề