首页 > 解决方案 > 在python中的for循环之外访问我的数组变量的问题(它只是访问最后一个已知值)

问题描述

我有一个 python 脚本,可以获取 youtube 频道的播放列表列表。然后我提取该频道中的播放列表 ID。我创建了一个全局数组变量来存储频道中的播放列表 ID。

这是我的代码:

import urllib
import ast
import os

from io import StringIO
import json
import pprint
import ast


url = "https://www.googleapis.com/youtube/v3/playlists?part=snippet&channelId=UC_ANPr8IkWibKlKhmi_-H1g&key=<my YT API key>"
playlist_array = []
videos_array = []

response = urllib.urlopen(url)
#data = ast.literal_eval(json.dumps(response))
data = json.loads(response.read())

print data
pprint.pprint(data['items'])

for item in data['items']:
    print(
        "Title: {}\nid: {}\nurl: {}\n".format(item['snippet']['title'], item['id'], item['snippet']['thumbnails']['default']['url']))

for item in data['items']:
    playlist_id = (json.dumps(item['id'])).strip('"')
    playlist_array = [playlist_id]
    print playlist_array[-1]

print playlist_array[-1]

# now iterate list of playlists to extract the videos in each playlist
##### TO DO Code right here #########

当我运行代码时,当我在for 循环中打印变量时,我可以看到频道的所有播放列表 ID 。当我在 for 循环之外打印数组变量的列表值时(我需要在 for 循环之外访问它,以便获取该特定播放列表的视频 ID)。

Output from Pycharm: PLejO9z7yhQOxjONeDVWaAy3kX3tEcImCR PLejO9z7yhQOwt7OKSMVLdAe4jeYDpZNJC PLejO9z7yhQOzJ068ZMLd0Zub_FOrGJ82y PLejO9z7yhQOx8ZrJYJ3o5zckygwvtUb1R PLejO9z7yhQOxx6XqB6DLvQd0-IDpb299H PLejO9z7yhQOxx6XqB6DLvQd0-IDpb299H <---- this is from printing the array variable outside the for loop

如何使我的脚本可以全局访问数组变量?

谢谢。

进程以退出代码 0 结束

标签: pythonarraysscope

解决方案


首先,一般来说,你不应该使用全局变量。

也就是说,正如@juanpa.arrivillaga 提到的那样,playlist_array = [playlist_id]它不会在您的列表中添加任何内容 - 它只是创建一个新列表。

你想要的行是:

playlist_array.append(playlist_id).


推荐阅读