Python-None参数
我有一个具有4个参数的函数:Python-None参数,python,list,arguments,Python,List,Arguments,我有一个具有4个参数的函数: def uploadDatabase(user,filter1,filter2, name): """uploads playlists to database if a playlist satisfying both filters is not long enough, we pick a playlist based on one single filter""" playlist_f
def uploadDatabase(user,filter1,filter2, name):
"""uploads playlists to database
if a playlist satisfying both filters is not long enough,
we pick a playlist based on one single filter"""
playlist_filter1 = [x['track'] for x in filter1]
playlist_filter2 = [x['track'] for x in filter2]
playlist_both_filters = [x['track'] for x in filter2 if x['track'] in [y['track'] for y in filter1]]
#create an empty dict for user as key
double_filter = {str(user):{}}
single_filter1 = {str(user):{}}
single_filter2 = {str(user):{}}
#set initial playback number for each track
count = 1
#set counts to tracks
double_filter[str(user)] = dict(zip(playlist_both_filters, [count for i in playlist_both_filters]))
db_double = double_filter
#set counts to tracks
single_filter1[str(user)] = dict(zip(playlist_filter1, [count for i in playlist_filter1]))
db_single1 = single_filter1
(...)
但是,有时无法通过filter2
:
uploadDatabase(user,energy_playlist, None, 'my playlist')
如何修复
uploadDatabase()
并告诉它忽略分配给变量playlist\u filter2
和double\u filter
的None-Type
,因为两者都需要有效的列表
?您可以通过以下操作将None
类型转换为两个过滤器的有效空列表:
playlist_filter1 = [x['track'] for x in filter1] if filter1 is not None else []
playlist_filter2 = [x['track'] for x in filter2] if filter2 is not None else []
而不是:
playlist_filter1 = [x['track'] for x in filter1]
playlist_filter2 = [x['track'] for x in filter2]
您可以通过执行以下操作将两个筛选器的
None
类型转换为有效的空列表:
playlist_filter1 = [x['track'] for x in filter1] if filter1 is not None else []
playlist_filter2 = [x['track'] for x in filter2] if filter2 is not None else []
而不是:
playlist_filter1 = [x['track'] for x in filter1]
playlist_filter2 = [x['track'] for x in filter2]
如果我理解正确,您需要检查参数filter2是否被传递 要做到这一点很简单,您实际上给它一个默认值为
None
,然后在代码中检查参数是否为None
示例代码
当您使用函数时,您可以传递filter2,它将覆盖默认的
None
值,或者不传递它,它将是None
,如果我理解正确,您需要检查参数filter2是否被传递
要做到这一点很简单,您实际上给它一个默认值为None
,然后在代码中检查参数是否为None
示例代码
当您使用该功能时,您可以通过filter2,它将覆盖默认的
None
值,或者只是不通过它,它将是None
请更新您的答案,以便它修复播放列表\u两个过滤器=[x['track']对于过滤器2中的x,如果[y['track']中的x['track']对于过滤器1中的y],同样使用如果条件
,请更新您的答案,以便它也使用如果条件
,也可以使用如果条件
,则在过滤器2中为x修复播放列表(两个过滤器=[x['track']