Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3与字典和列表有关的问题_Python_Json_Python 3.x_Dictionary - Fatal编程技术网

Python 3与字典和列表有关的问题

Python 3与字典和列表有关的问题,python,json,python-3.x,dictionary,Python,Json,Python 3.x,Dictionary,我需要获取列表中项目的索引号,它包含一个字符串c=返回给发送者Matrey Remix。然后从这个索引中获取信息。但我得到了列表中所有项目的编号。没有错误 demo = json.loads(raw) c = "Return To Sender (Matrey Remix)" for i in (i for i, tr in enumerate(demo['tracks']) if str(tr['title']).find(c)): print(i) dict = demo['trac

我需要获取列表中项目的索引号,它包含一个字符串c=返回给发送者Matrey Remix。然后从这个索引中获取信息。但我得到了列表中所有项目的编号。没有错误

demo = json.loads(raw)
c = "Return To Sender (Matrey Remix)"
for i in (i for i, tr in enumerate(demo['tracks']) if str(tr['title']).find(c)):
    print(i)
dict = demo['tracks'][i]
例如,我在代码的结果中有7个曲目标题:

for tr in demo['tracks']:
    print(tr['title'])
曲目名称:

Return To Sender (Original Mix)
Return To Sender (Matrey Remix)
Return To Sender (Matrey Remix)
Return To Sender (Matrey Remix)
Return To Sender (Original Mix)
Return To Sender (Original Mix)
Return To Sender (Original Mix)
但输出是空的

演示对象:

在开始处找到文本时,str.find返回0:

>>> 'foo bar'.find('foo')
0
在布尔上下文中被视为假值的:

>>> if 0:
...     print('Found at position 0!')
...
>>>
如果文本不存在,str.find将返回-1。从:

返回找到子字符串sub的字符串中的最低索引[…]。如果未找到子项,则返回-1

这意味着,只有文本在开头,代码才会不打印任何内容。在所有其他情况下,包括找不到标题,将打印曲目

不要使用str.find。如果文本存在,则使用in获得True;如果文本不存在,则使用False:

for i in (i for i, tr in enumerate(demo['tracks']) if c in tr['title']):
使用json数据演示:

在开始处找到文本时,str.find返回0:

>>> 'foo bar'.find('foo')
0
在布尔上下文中被视为假值的:

>>> if 0:
...     print('Found at position 0!')
...
>>>
如果文本不存在,str.find将返回-1。从:

返回找到子字符串sub的字符串中的最低索引[…]。如果未找到子项,则返回-1

这意味着,只有文本在开头,代码才会不打印任何内容。在所有其他情况下,包括找不到标题,将打印曲目

不要使用str.find。如果文本存在,则使用in获得True;如果文本不存在,则使用False:

for i in (i for i, tr in enumerate(demo['tracks']) if c in tr['title']):
使用json数据演示: