2010-09-17 28 views

Trả lời

19

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 
+0

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

+1

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? –

0

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ố.

6

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... 
2

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.

+0

'.has_key' không được chấp nhận – SilentGhost

+0

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 –

+0

@SilentGhost - cảm ơn, tôi sẽ loại bỏ điều đó một lần sau đó. – dtlussier

Các vấn đề liên quan