我的想法很简单,我要找的是指点、批评、批评等等。你知道吗
我知道人们可以迭代某些数据类型,这对于任何编程语言都是非常重要和基础的。但是,如果需要一个嵌套循环(可能是为了比较),或者在我的例子中,创建一个更简单、更整洁的for循环的方法,该for循环中接下来的两个iterables。你知道吗
我们知道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字符串要比较呢?在使用Alec的pipe up之前,不,if JSONString1 == JSONString2
不是一个合适的选项,因为我需要比较每个JSON字符串中的各个字段,以比较每个版本的JSON字符串之间的差异。例如,在第1版和第2版中,存在这些差异,X被添加,而Y被删除。你知道吗
我还了解到,字典、JSON字符串等都有内置函数来直接访问键(.items()
)的值,但这通常不适用于嵌套或双嵌套的JSON字符串,您需要将for循环嵌套到JSON字符串中的nth
个嵌套(如果JSON字符串,需要5或6个for循环)。你知道吗
在我看来,这似乎是相当倒退和适得其反,所以这里是长期和短期的一切
有没有已经存在的东西可以检测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()
目前没有回答
相关问题 更多 >
编程相关推荐