Cara mengimpor deepdiff dengan python

Solusi yang digunakan di sini adalah mempertahankan kebijakan sebagai string berformat JSON di kamus negara bagian. Namun, ini berarti jika DeepDiff dijalankan pada string, ada kemungkinan besar kegagalan hanya karena pemformatan dan pengurutan, bahkan jika kebijakannya sama. Jadi pertama, jika ada atribut Kebijakan, lakukan DeepDiff hanya dari JSON yang diurai dari string keduanya, lalu jika cocok, hapus elemen dari kamus. Lalu ada DeepDiff lain di negara bagian lainnya, yang tidak akan gagal karena kesalahan sekarang karena string kebijakan telah dihapus. Ada detail kecil yang menyenangkan untuk diperhatikan di sini. Dengan menghapus kebijakan dari definisi status yang diinginkan, ini mencegah pencarian kebijakan di masa mendatang, dan perbandingan kebijakan dengan status saat ini, karena keduanya hanya dilakukan jika kunci Kebijakan ada. Saat pengguna memperbarui kebijakan, kuncinya diperkenalkan kembali, dan seluruh proses ini akan terjadi sekali lagi. """ jika 'Kebijakan' di want_filtered. policy_diff = DeepDiff(json. beban(diinginkan_filtered['Kebijakan']), json. beban(current_filtered['Kebijakan']), abaikan_order=True) jika policy_diff. penebang. debug("Key policy tidak sama untuk {0} dengan diff. {1}". format (diri. nama_kunci, json. dumps(policy_diff))) logger. warning( 'Pembaruan untuk kebijakan tidak diterapkan. Akan menegaskan kesetaraan (salah)') # TODO. Ubah untuk mengembalikan Salah setelah pembaruan kebijakan didukung kembalikan Benar # Hapus string kebijakan karena sama dengan yang diinginkan_filtered. pop('Kebijakan') current_filtered. pop('Policy') diff = DeepDiff(desired_filtered, current_filtered, diabaikan_order=True) jika tidak diff atau len(diff) == 0. kembali Benar lain. cetak (beda)
def test_cache_1D_array_of_numbers_that_do_not_overlap(self). abaikan_urutan = True cache_size = 5000 max_diffs = 30000 max_passes = 40000 t1 = daftar(rentang(1, 30)) t2 = daftar(rentang(100, 120)) diff = DeepDiff(t1, t2, abaikan_pesanan=pesan_abaikan, max_passes=max_passes, . get_stats() # Karena tidak ada tumpang tindih antara 2 larik, meskipun # abaikan_urutan=True, algoritme beralih ke pembanding berdasarkan urutan. expected_stats = { 'JUMLAH LULUS'. 0, 'JUMLAH BERBEDA'. 50, 'JUMLAH HIT CACHE JARAK'. 0, 'BATAS LULUS MAX TERCAPAI'. Salah, 'MAX DIFF LIMIT REACHED'. Salah } menegaskan ekspektasi_stats == statistik ekspektasi = {'nilai_berubah'. {'akar[0]'. {'nilai baru'. 100, 'nilai_lama'. 1}, 'akar[1]'. {'nilai baru'. 101, 'nilai_lama'. 2}, 'akar[2]'. {'nilai baru'. 102, 'nilai_lama'. 3}, 'akar[3]'. {'nilai baru'. 103, 'nilai_lama'. 4}, 'akar[4]'. {'nilai baru'. 104, 'nilai_lama'. 5}, 'akar[5]'. {'nilai baru'. 105, 'nilai_lama'. 6}, 'akar[6]'. {'nilai baru'. 106, 'nilai_lama'. 7}, 'akar[7]'. {'nilai baru'. 107, 'nilai_lama'. 8}, 'akar[8]'. {'nilai baru'. 108, 'nilai_lama'. 9}, 'akar[9]'. {'nilai baru'. 109, 'nilai_lama'. 10}, 'akar[10]'. {'nilai baru'. 110, 'nilai_lama'. 11}, 'akar[11]'. {'nilai baru'. 111, 'nilai_lama'. 12}, 'akar[12]'. {'nilai baru'. 112, 'nilai_lama'. 13}, 'akar[13]'. {'nilai baru'. 113, 'nilai_lama'. 14}, 'akar[14]'. {'nilai baru'. 114, 'nilai_lama'. 15}, 'akar[15]'. {'nilai baru'. 115, 'nilai_lama'. 16}, 'akar[16]'. {'nilai baru'. 116, 'nilai_lama'. 17}, 'akar[17]'. {'nilai baru'. 117, 'nilai_lama'. 18}, 'akar[18]'. {'nilai baru'. 118, 'nilai_lama'. 19}, 'akar[19]'. {'nilai baru'. 119, 'nilai_lama'. 20}}, 'iterable_item_removed'. {'akar[20]'. 21, 'akar[21]'. 22, 'akar[22]'. 23, 'akar[23]'. 24, 'akar[24]'. 25, 'akar[25]'. 26, 'akar[26]'. 27, 'akar[27]'. 28, 'akar[28]'. 29}} menegaskan diharapkan == diff

Pustaka DeepDiff digunakan untuk melakukan pencarian dan perbedaan pada objek Python. Muncul dengan tiga operasi

  • DeepDiff. Perbedaan Mendalam kamus, iterables, string dan objek lainnya. Secara rekursif akan mencari semua perubahan
  • DeepSearch. Mencari objek di dalam objek lain
  • DeepHash. Hash objek apa pun berdasarkan kontennya meskipun tidak "dapat di-hash"

Instal dari PyPi

pip install deepdiff

DeepSearch

Pencarian Jauh di dalam objek untuk menemukan item yang cocok dengan kriteria Anda

Perhatikan bahwa ini mencari jalur yang cocok dengan kriteria Anda atau kata dalam item

Contoh

  • Pengimporan

    from deepdiff import DeepSearch, grep _

DeepSearch hadir dengan fungsi grep_ yang lebih mudah diingat

Cari dalam daftar untuk string

>>> obj = ["long somewhere", "string", 0, "somewhere great!"] >>> item = "somewhere" >>> ds = obj | grep(item, verbose_level=2) >>> print(ds) {'matched_values': {'root[3]': 'somewhere great!', 'root[0]': 'long somewhere'}}

Cari di data bersarang untuk string

>>> obj = ["something somewhere", {"long": "somewhere", "string": 2, 0: 0, "somewhere": "around"}] >>> item = "somewhere" >>> ds = obj | grep(item, verbose_level=2) >>> pprint(ds, indent=2) { 'matched_paths': {"root[1]['somewhere']": 'around'}, 'matched_values': { 'root[0]': 'something somewhere', "root[1]['long']": 'somewhere'}}

Untuk mendapatkan kunci dan nilai dari objek yang cocok, Anda dapat menggunakan objek Extract

>>> from deepdiff import grep >>> obj = {1: [{'2': 'b'}, 3], 2: [4, 5]} >>> result = obj | grep(5) >>> result {'matched_values': OrderedSet(['root[2][1]'])} >>> result['matched_values'][0] 'root[2][1]' >>> path = result['matched_values'][0] >>> extract(obj, path) 5 _

Referensi

  • Beranda/Dokumen
  • Dokumen Lama

Pembaruan terakhir. 2021-04-19

Postingan terbaru

LIHAT SEMUA