我正在读取JSON文本文件的内容,并且正在努力获取数据中特定索引的内容。
下面是我正在读取的数据对象的示例。我的文件中有多个实例,但是它们看起来都类似于以下内容:
[{ "value": "hello", "name": "janedoe", "istrue": "yes", "number": 5 }]
控制台每次均不返回任何内容,我可以打印json_list[0]
,并且它返回整个值{'name': 'janedoe', 'number': 5}
。
我想使用子字符串“ doe”在列表中搜索并找到一个匹配项,然后返回该匹配项的索引。
我尝试使用一个函数和一个这样的衬里
res = [i for i in json_list if substring in i]
with open ('text.txt', 'r') as output_file:
json_array = json.load(output_file)
json_list = []
json_list = [{'name': item['name'].split('.')[0], 'number': item['number']}
for item in json_array]
substring = 'doe'
def index_containing_substring(json_list, substring):
for i, s in enumerate(json_list):
if substring in s:
return i
return -1
我想返回索引值,以便随后可以调用该索引并利用其数据。
答案 0 :(得分:2)
我们是否同意您谈论列表中的字典? 据我了解,您想像这样访问一个索引:
tab = [{ "value": "hello", "name": "janedoe", "istrue": "yes", "number": 5 }]
% Doesn't work
print(tab[0][0]) // You would like "hello"
但是,如果您知道只需要“值”,“名称”或任何其他内容,则可以这样访问:
tab = [{ "value": "hello", "name": "janedoe", "istrue": "yes", "number": 5 }]
# Display "hello"
print(tab[0]["value"])
您可以像使用循环那样获取所需的字段。 是你想要的吗?
编辑:
这是您想要的新代码:
def index_containing_substring(list_dic, substring):
for i, s in enumerate(json_list):
for key in s:
if substring in s[key]:
# If you don't want the value remove s[key]
return i, key, s[key]
return -1
json_list = [
{ "value": "hello", "name": "janedoe", "istrue": "yes", "number": 5 },
{ "value": "hello", "name": "pop", "istrue": "yes", "number": 5 }
]
substring = 'doe'
# display: (0, 'name', 'janedoe')
print(index_containing_substring(json_list, substring))
我做了一些修改,但是该函数返回表的索引,并且哪个键包含'doe'。 注意,在代码中,您只是返回找到“ doe”的第一个元素,而不是所有元素。 但是,如果要获得所有结果,则不难一概而论。
答案 1 :(得分:1)
我只会进行一个简单的循环...
def find_doe_in_list_of_dicts(list_of_dicts):
for item in list_of_dicts:
if "doe" in item["name"]:
index_of_item_with_doe = list_of_dicts.index(item)
break
return index_of_item_with_joe
或者真的很难看:
def find_doe_in_list_of_dicts(list_of_dicts):
return list_of_dicts.index([item for item in list_of_dicts if "name" in item and "doe" in item["name"]][0])