Helpex - Trao đổi & giúp đỡ Đăng nhập
3

Vì tôi không thể tìm thấy bất kỳ tài liệu nào về điều này, vì vậy tôi sẽ hỏi ở đây.

Như được hiển thị trong đoạn mã bên dưới, tôi thấy rằng ortoán tử ( |), hoạt động như vậy:

a = {"a": 1,"b": 2, 2: 3}
b = {"d": 10, "e": 11, 11: 12}

keys = a.keys() | b.keys()
aonce = a.keys() | a.values()
bonce = b.keys() | b.values()

for i in keys:
    print(i, end=" ")
print()
for i in aonce:
    print(i, end=" ")
print()
for i in bonce:
    print(i, end=" ")
print()

Điều này tạo ra kết quả, theo một số thứ tự:

2 d 11 a b e   
3 1 2 a b   
10 e 11 12 d   

|Tuy nhiên, ban đầu tôi giả định rằng các bộ có thể lặp lại này tương thích với , tương tự như cách các bộ. Thử nghiệm với các tệp có thể lặp lại khác, chẳng hạn như a list.__iter__(), đã gây ra lỗi. Thậm chí;

values = a.values() | b.values()
for i in values:
    print(i, end=" ") 
print()

Cái mà tôi cho là đã hoạt động, do việc sử dụng dict.values()trong các ví dụ trước, đã gây ra lỗi.

Vì vậy, câu hỏi của tôi là; Tôi đã xem qua cái quái gì, và quan trọng hơn, nó đáng tin cậy đến mức nào? Đối số của tôi cần phải là lớp con nào để có thể sử dụng lớp này?

3 hữu ích 0 bình luận 849 xem chia sẻ
5

Các Python 3 Tài liệu ghi chú rằng dict.keysphương pháp được thiết lập giống như và thực hiện collections.abc.Set.

Lưu ý rằng dict.valueskhông được thiết lập như mặc dù nó có thể xuất hiện để được như vậy trong ví dụ của bạn:

aonce = a.keys() | a.values()
bonce = b.keys() | b.values()

Tuy nhiên, những điều này đang tận dụng thực tế là chế độ xem khóa triển khai __or__(và __ror__) trên các tệp lặp tùy ý.

Ví dụ, những điều sau sẽ không hoạt động:

>>> a.values() | b.values()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for |: 'dict_values' and 'dict_values'
5 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ python python-3.x python-3.5 , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading