Từ điển hợp nhất sâu python

Dịch vụ Từ điển tương tự như đối tượng Bộ sưu tập Cơ bản của Collabora Office tích hợp sẵn, tuy nhiên có nhiều tính năng hơn. Ví dụ: đối tượng Bộ sưu tập không hỗ trợ truy xuất khóa. Hơn nữa, Từ điển cung cấp các khả năng bổ sung như thay thế các khóa, kiểm tra xem một khóa cụ thể đã tồn tại chưa và chuyển đổi Từ điển thành một đối tượng Mảng hoặc chuỗi JSON


gọi dịch vụ

Ví dụ sau tạo myDict như một từ điển rỗng


    GlobalScope.BasicLibraries.loadLibrary["ScriptForge"]
    Dim myDict As Variant
    myDict = CreateScriptService["Dictionary"]
  

Nên giải phóng tài nguyên sau khi sử dụng


     Set myDict = myDict.Dispose[]
  

Ví dụ bên dưới tạo một phiên bản trống của dịch vụ Từ điển và sử dụng phương thức cập nhật gốc của Python để điền vào đó nội dung của một đối tượng dict Python


    dico = dict['A' = 1, 'B' = 2, 'C' = 3]
    # Initialize myDict as an empty dict object
    myDict = CreateScriptService['Dictionary']
    # Load the values of dico into myDict
    myDict.update[dico]
    myDict['D'] = 4
    print[myDict]   # {'A': 1, 'B': 2, 'C': 3, 'D': 4}
    propval = myDict.ConvertToPropertyValues[]
  

Có thể tạo một phiên bản của dịch vụ Từ điển bằng cách sử dụng đối tượng dict Python làm đối số như trong ví dụ sau


    dico = dict['A' = 1, 'B' = 2, 'C' = 3]
    # Initialize myDict with the content of dico
    myDict = CreateScriptService['Dictionary', dico]
    myDict['D'] = 4
    print[myDict] # {'A': 1, 'B': 2, 'C': 3, 'D': 4}
    propval = myDict.ConvertToPropertyValues[]
  

Vì Python có hỗ trợ từ điển tích hợp nên hầu hết các phương thức trong dịch vụ Từ điển chỉ khả dụng cho các tập lệnh Cơ bản. Các trường hợp ngoại lệ là ConvertToPropertyValues ​​và ImportFromPropertyValues ​​được hỗ trợ trong cả Basic và Python


Đặc tính

Tên

Chỉ đọc

Loại hình

Sự mô tả

Đếm

Đúng

Dài

Số mục trong từ điển

vật phẩm

Đúng

Mảng biến thể

Danh sách các mục dưới dạng mảng một chiều

chìa khóa

Đúng

Mảng chuỗi

Danh sách các khóa dưới dạng mảng một chiều


Thuộc tính Khóa và Mục trả về nội dung tương ứng của chúng, sử dụng thứ tự giống hệt nhau. Thứ tự không liên quan đến trình tự tạo

Ví dụ sau sử dụng thuộc tính Keys để lặp lại tất cả các khóa trong từ điển myDict


    Dim a As Variant, b As String
    a = myDict.Keys
    For Each b In a
        MsgBox[myDict.Item[b]]
    Next b
    


cộng

Thêm một cặp mục khóa mới vào từ điển. Trả về True nếu thành công

mệnh lệnh. Thêm [phím. str, mục. không tí nào]. bool

Chìa khóa. Giá trị chuỗi được sử dụng để xác định Mục. Khóa không phân biệt chữ hoa chữ thường

mục. Bất kỳ giá trị nào, bao gồm mảng, đối tượng Cơ bản, đối tượng UNO, từ điển, v.v.


      Dim NewValue As Variant
      myDict.Add["NewKey", NewValue]
    

Mỗi khóa phải là duy nhất trong cùng một từ điển. Nếu khóa đã tồn tại trong từ điển, DUPLICATEKEYERROR sẽ xuất hiện. Các phím được tạo bằng các ký tự khoảng trắng sẽ gây ra lỗi INVALIDKEYERROR


ConvertToArray

Lưu trữ nội dung của từ điển trong một mảng hai cột dựa trên số không. Các khóa được lưu trữ trong cột đầu tiên và các mục được lưu trữ trong cột thứ hai

Nếu từ điển trống, phương thức này sẽ trả về một Mảng trống

mệnh lệnh. ConvertToArray[]. bất kỳ [0. *, 0. 1]


      Dim myDict as Variant
      myDict = CreateScriptService["Dictionary"]
      myDict.Add["a", 1]
      myDict.Add["b", 2]
      myDict.Add["c", 3]
      Dim arr as Variant
      arr = myDict.ConvertToArray[]
      '[["a", 1], ["b", 2], ["c", 3]]
    

Chuyển đổiToJson

Chuyển đổi nội dung của từ điển thành văn bản JSON [Ký hiệu đối tượng JavaScript]

Hạn chế

Phương pháp này hỗ trợ các loại dữ liệu sau. Chuỗi, Boolean, số, Null và Empty. Mảng chứa các mục thuộc các loại đó cũng được cho phép, bất kể kích thước của chúng là bao nhiêu. Ngày được chuyển đổi thành chuỗi, tuy nhiên chúng không thể được sử dụng bên trong Mảng. Các loại dữ liệu khác được chuyển đổi thành biểu diễn chuỗi của chúng bằng SF_String. Dịch vụ đại diện

mệnh lệnh. ConvertToJson[thụt lề. str = ""]. str

thụt vào. Khi thụt lề là một số dương hoặc một văn bản, các phần tử mảng JSON và các thành viên đối tượng được in đẹp với mức thụt đầu dòng đó. Giá trị thụt lề âm sẽ thêm các dòng mới không có thụt lề. Giá trị mặc định là một chuỗi rỗng "" chọn biểu diễn nhỏ gọn nhất. Sử dụng một số nguyên dương để thụt lề thụt vào nhiều khoảng trắng trên mỗi cấp. Khi thụt lề là một chuỗi, chẳng hạn như Chr[9] hoặc Tab[1], ký tự Tab được sử dụng để thụt lề từng cấp


      myDict.Add["p0", 12.5]
      myDict.Add["p1", "a string àé""ê"]
      myDict.Add["p2", DateSerial[2020,9,28]]
      myDict.Add["p3", True]
      myDict.Add["p4", Array[1,2,3]]
      MsgBox myDict.ConvertToJson[]    
      '{"p0": 12.5, "p1": "a string \u00e0\u00e9\"\u00ea", "p2": "2020-09-28", "p3": true, "p4": [1, 2, 3]}
    

ConvertToPropertyValues

Lưu trữ nội dung của từ điển vào một mảng PropertyValues

Mỗi mục trong mảng là một com. mặt trời. ngôi sao. đậu. Giá trị tài sản. Key lưu ở Name, item lưu ở Value

Nếu một trong các mục có loại Ngày, nó sẽ được chuyển đổi thành com. mặt trời. ngôi sao. sử dụng. Cấu trúc ngày giờ. Nếu một trong các mục là một mảng trống, nó sẽ được chuyển đổi thành Null. Mảng kết quả trống khi từ điển trống

mệnh lệnh. ConvertToPropertyValues[]. đối tượng [0. *]

________số 8

Lưu ý trong ví dụ bên dưới rằng từ điển Python cần được chuyển làm đối số thứ hai của phương thức CreateScriptService


    myDict = dict[]
    myDict["Color"] = "Blue"
    myDict["Width"] = 30
    sfDic = CreateScriptService["Dictionary", myDict]
    prop = sfDic.ConvertToPropertyValues[]
  

Nhiều dịch vụ và phương thức trong thư viện UNO nhận các tham số được biểu diễn bằng cấu trúc PropertyValue, là một phần của API LibreOffice


tồn tại

Xác định xem một khóa có tồn tại trong từ điển hay không

mệnh lệnh. Tồn tại [khóa. str]. bool

Chìa khóa. Chìa khóa được tra cứu trong từ điển


     Set myDict = myDict.Dispose[]
  
0

NhậpTừJson

Thêm nội dung của chuỗi JSON [Ký hiệu đối tượng JavaScript] vào từ điển hiện tại. Trả về True nếu thành công

Hạn chế

Chuỗi JSON có thể chứa số, văn bản, booleans, giá trị null và mảng chứa các loại đó. Nó không được chứa các đối tượng JSON cụ thể là từ điển phụ

Một nỗ lực được thực hiện để chuyển đổi văn bản thành ngày nếu mục phù hợp với một trong các mẫu này. YYYY-MM-DD, HH. MM. SS hoặc YYYY-MM-DD HH. MM. SS

mệnh lệnh. ImportFromJson[inputstr. str, ghi đè. bool = Sai]. bool

inputtr. Chuỗi để nhập

ghi đè lên. Khi Đúng, các mục có cùng tên có thể tồn tại trong từ điển và giá trị của chúng bị ghi đè. Khi Sai [mặc định], các phím lặp lại sẽ gây ra lỗi. Xin lưu ý rằng các khóa từ điển không phân biệt chữ hoa chữ thường trong khi các tên phân biệt chữ hoa chữ thường trong các chuỗi JSON


     Set myDict = myDict.Dispose[]
  
1

ImportFromPropertyValues

Chèn nội dung của một mảng các đối tượng PropertyValue vào từ điển hiện tại. Tên Thuộc tính Giá trị được sử dụng làm Khóa trong từ điển, trong khi Giá trị chứa các giá trị tương ứng. Trả về True nếu thành công

mệnh lệnh. ImportFromPropertyValues[giá trị thuộc tính. đối tượng [0. *], ghi đè lên. bool = Sai]. bool

giá trị tài sản. Mảng 1 chiều dựa trên số 0 có chứa com. mặt trời. ngôi sao. đậu. đối tượng PropertyValue. Tham số này cũng có thể là một đối tượng giá trị thuộc tính duy nhất không có trong Mảng

ghi đè lên. Khi Đúng, các mục có cùng tên có thể tồn tại trong từ điển và giá trị của chúng bị ghi đè. Khi Sai [mặc định], các phím lặp lại sẽ gây ra lỗi. Lưu ý rằng các khóa từ điển không phân biệt chữ hoa chữ thường trong Cơ bản, trong khi các tên phân biệt chữ hoa chữ thường trong các bộ giá trị thuộc tính và trong từ điển Python

Các ví dụ bên dưới trước tiên tạo một mảng có hai đối tượng PropertyValue, sau đó chuyển đổi nó thành một từ điển


     Set myDict = myDict.Dispose[]
  
2


     Set myDict = myDict.Dispose[]
  
3

Mục

Truy xuất một mục từ điển hiện có dựa trên khóa của nó. Trả về giá trị của item nếu thành công, ngược lại trả về Empty

mệnh lệnh. Mục [chìa khóa. str]. không tí nào

Chìa khóa. Không phân biệt chữ hoa chữ thường. Phải tồn tại trong từ điển, nếu không sẽ xảy ra lỗi UNKNOWNKEYERROR

Ví dụ sau lặp lại tất cả các khóa trong từ điển và sử dụng phương thức Item để truy cập các giá trị của chúng


     Set myDict = myDict.Dispose[]
  
4

Loại bỏ

Xóa một mục từ điển hiện có dựa trên khóa của nó. Trả về True nếu thành công

mệnh lệnh. Xóa [phím. str]. bool

Chìa khóa. Không phân biệt chữ hoa chữ thường. Phải tồn tại trong từ điển, nếu không sẽ xảy ra lỗi UNKNOWNKEYERROR


     Set myDict = myDict.Dispose[]
  
5

Xoá bỏ hết

Loại bỏ tất cả các mục từ từ điển. Trả về True nếu thành công

mệnh lệnh. Xoá bỏ hết[]. bool


     Set myDict = myDict.Dispose[]
  
6

ReplaceItem

Thay thế một giá trị mục hiện có dựa trên khóa của nó. Trả về True nếu thành công

mệnh lệnh. ReplaceItem[key. str, giá trị. không tí nào]. bool

Chìa khóa. Giá trị chuỗi đại diện cho khóa có giá trị sẽ được thay thế. Không phân biệt chữ hoa chữ thường. Nếu khóa không tồn tại trong từ điển, lỗi UNKNOWNKEYERROR sẽ xuất hiện

giá trị. Giá trị mới của mục được tham chiếu với tham số chính


     Set myDict = myDict.Dispose[]
  
7

Thay thế phím

Thay thế một khóa hiện có trong từ điển bằng một khóa mới. Giá trị vật phẩm không thay đổi. Trả về True nếu thành công

mệnh lệnh. ReplaceKey[phím. str, giá trị. str]. bool

Chìa khóa. Giá trị chuỗi đại diện cho khóa được thay thế. Không phân biệt chữ hoa chữ thường. Nếu khóa không tồn tại trong từ điển, lỗi UNKNOWNKEYERROR sẽ xuất hiện

giá trị. Giá trị chuỗi cho khóa mới. Không phân biệt chữ hoa chữ thường. Nếu khóa mới đã tồn tại trong từ điển, lỗi DUPLICATEKEYERROR sẽ xuất hiện


     Set myDict = myDict.Dispose[]
  
8

Tất cả các quy trình hoặc mã định danh cơ bản của ScriptForge có tiền tố là ký tự gạch dưới "_" được dành riêng cho mục đích sử dụng nội bộ. Chúng không có nghĩa là được sử dụng trong Macro cơ bản hoặc tập lệnh Python

Chủ Đề