dict1=({"EMP$$1":1,"EMP$$2":2,"EMP$$3":3})
Làm thế nào để kiểm tra xem EMP tồn tại trong từ điển sử dụng pythonKiểm tra cho một mô hình chủ chốt trong một cuốn từ điển trong python
dict1.get("EMP##") ??
dict1=({"EMP$$1":1,"EMP$$2":2,"EMP$$3":3})
Làm thế nào để kiểm tra xem EMP tồn tại trong từ điển sử dụng pythonKiểm tra cho một mô hình chủ chốt trong một cuốn từ điển trong python
dict1.get("EMP##") ??
Nó không hoàn toàn rõ ràng những gì bạn muốn làm.
Bạn lặp qua các phím trong các phím chọn dict
có thể sử dụng the startswith()
method:
>>> for key in dict1:
... if key.startswith("EMP$$"):
... print "Found",key
...
Found EMP$$1
Found EMP$$2
Found EMP$$3
Bạn có thể sử dụng danh sách hiểu biết để có được tất cả các giá trị phù hợp:
>>> [value for key,value in dict1.items() if key.startswith("EMP$$")]
[1, 2, 3]
Nếu bạn chỉ muốn để biết liệu một khóa phù hợp với bạn có thể sử dụng the any()
function:
>>> any(key.startswith("EMP$$") for key in dict1)
True
Tôi đã thử điều này như trong ví dụ đầu tiên của bạn và tôi đặt một người khác sau đó, nếu điều kiện phần dường như sai .... – Rajeev
Tôi đã thử cách tiếp cận này và nó hoạt động như tác giả dự định. Thêm một người khác làm việc cho tôi là tốt. lỗi gì bạn nhận được? –
Không có cách nào để phù hợp với các phím từ điển như thế này. Tôi đề nghị bạn suy nghĩ lại cấu trúc dữ liệu của bạn cho vấn đề này. Nếu điều này phải nhanh hơn, bạn có thể sử dụng thứ gì đó giống như cây hậu tố.
Cách tiếp cận này tấn công tôi trái với ý định của từ điển.
Từ điển được tạo thành từ các khóa băm có giá trị được liên kết với chúng. Lợi ích của cấu trúc này là nó cung cấp tra cứu rất nhanh (theo thứ tự của O (1)). Bằng cách tìm kiếm thông qua các phím, bạn đang phủ nhận lợi ích đó.
Tôi khuyên bạn nên tổ chức lại từ điển của mình.
dict1 = {"EMP$$": {"1": 1, "2": 2, "3": 3} }
Sau đó, việc tìm kiếm "EMP $$" cũng đơn giản như
if "EMP$$" in dict1:
#etc...
Bạn cần phải có rất nhiều cụ thể hơn với những gì bạn muốn làm. Tuy nhiên, giả sử các từ điển mà bạn đã đưa:
dict1={"EMP$$1":1, "EMP$$2":2, "EMP$$3":3}
Nếu bạn muốn biết nếu một phím cụ thể đã có mặt trước khi cố gắng để yêu cầu nó, bạn có thể:
dict1.has_key('EMP$$1')
True
Returns True
như dict1
có một chìa khóa EMP$$1
.
Bạn cũng có thể quên về việc kiểm tra cho các phím và dựa vào giá trị trả về mặc định của dict1.get()
:
dict1.get('EMP$$5',0)
0
Returns 0
như mặc nhiên gán dict1
không có một phím EMP$$5
.
Trong một cách tương tự bạn cũng có thể sử dụng một cấu trúc 'thử/trừ/để bắt và xử lý các phím bỏ lỡ:
try:
dict1['EMP$$5']
except KeyError, e:
# Code to deal w key error
print 'Trapped key error in dict1 looking for %s' % e
Những câu trả lời khác cho câu hỏi này cũng là rất lớn, nhưng chúng ta cần biết thêm là chính xác hơn.
'.has_key' không được chấp nhận – SilentGhost
SilentGhost là chính xác. Sử dụng biểu mẫu 'key in dict' thay vì dict.has_key (key). http://docs.python.org/library/stdtypes.html#dict.has_key –
@SilentGhost - cảm ơn, tôi sẽ loại bỏ điều đó một lần sau đó. – dtlussier
Nó không hoàn toàn rõ ràng những gì bạn đang cố gắng làm. Bạn có thể thuật lại câu hỏi của mình không? Cung cấp đầu vào mẫu và đầu ra sẽ giúp ích. –