Моя идея довольно проста, мне нужны указатели, критика, критика и т. Д.
Я понимаю, что можно перебирать определенные типы данных, что прекрасно и является фундаментальным для любого языка программирования.Но там, где вам потребуется вложенный цикл (возможно, для сравнения) или в моем случае, чтобы создать более простой и аккуратный способ цикла for, в котором будут две следующие итерируемые элементы.
Мы знаем, что Python может ожидатьопределенное количество значений, например
for key in dictionary_data:
# do some stuff with it
pass
Python здесь ожидает, что одно значение будет распаковано в левую переменную из правой переменной, пока, ну, я полагаю, оно не поймает StopIteration или что-то в фоновом режиме.
Мы также знаем, что цикл Python for может обрабатывать более одного значения распаковки, например:
for key, index in enumerate(dictionary_data):
# do some more cool stuff
pass
Но давайте рассмотрим пример строки JSON (или объекта), которая предназначена для всех намерений иЦели словарь.Что если у нас есть две строки JSON, которые мы хотим сравнить?И перед тем, как приступить к умному поиску Алека, нет, if JSONString1 == JSONString2
не подходит, потому что мне нужно сравнить отдельные поля в каждой из строк JSON, чтобы сопоставить различия между каждой версией строки JSON.Например, в версиях 1 и 2 есть эти различия, X было добавлено, а Y было удалено.
Я также понимаю, что все словари, строки JSON и т. Д. Имеют встроенные функции для прямого доступа к значениям.ключей (.items()
), но, как правило, это не работает для вложенных или двойных вложенных строк json, и вам нужно будет поместить цикл for в nth
число вложений в строке json (если имеется 5 уровнейвложенности в строку JSON, 5 или 6 для циклов необходимы).
Мне это кажется довольно задом наперед и контрпродуктивным, так что здесь самое длинное и короткое из всего этого;
существует ли что-нибудь, что уже может определить, сколько уровней вложенности присутствует в строке json (или словаре python)?Кроме того, после обнаружения он может извлечь ключи и значения из объекта Python для последующего сравнения?
Пока что это то, с чем я работаю, но это был просто концептуальный дизайн идеи, и никтоозначает, что закончено, ни проверено должным образом.
import json
js = '{"list":{"entry":[{"recordId":2,"deleted":0,"createdBy":"user.name","created":1542038309023,' \
'"id":"6e526a31-0e42-4fd9-8a0f-416e12354562", "fields":{"inuseby":"otheruser.name","returndate":1542240000000, ' \
'"sensor":"93b33535-6273-40a9-a7c3-45dd6a87d4b4","startdate":1541980800000,"class":"fields","version":1,' \
'"SATstatus":"error"},"ownedBy":"user.name"}]}}'
jsl = json.loads(js)
class JSONHookers(object):
def __init__(self):
self.js = js
self.jsl = json.loads(js)
if self.jsl:
for key, value in jsl.items():
self.__dict__[key] = value
for k, v in value.items():
self.__dict__[k] = v
for entries in v:
self.__dict__['entry'] = entries
print('Key: {}\nHas value/s of\n{}\n'.format('fields', fields))
if __name__ == '__main__':
jh = JSONHookers()