我想做一些表格:
for index,value in enumerate('xyz'):
[x,y,z][index] = [dict1.get(value),dict2.get(value),dict3.get(value)][index]
但当然这不起作用。
我想获取一个输入字符串并将每个字符与字典匹配,然后将相应的字典值分配给变量。考虑以下功能:
def parse_options(options):
dir_pref,file_pref,name_pref = None,None,None
for idx,char in enumerate(options):
# match key characters from input 'options' string to dictionaries
if char in [dir_options.keys(),file_options.keys(),name_options.keys()][idx]:
[dir_pref,file_pref,name_pref][idx] = \
[dir_options.get(char),file_options.get(char),name_options.get(char)][idx]
return [dir_pref,file_pref,name_pref]
目前,返回(None,None,None)
这是一个重命名脚本。 options
是一个字符串对象,其中字符串的第一个字符告诉我的脚本它应该如何遍历目录;第二个字符告诉我的脚本应该如何选择要操作的文件;第三个字符告诉我的脚本应该如何重命名文件。我想将options
中的每个字符与相应的字典(dir_options
,file_options
和name_options
分别匹配)并将其对应的字典值分配给三个新变量( dir_pref
,file_pref
和name_pref
)
可能有更好的方法可以解决这个问题,在这种情况下,我很乐意听到建议
答案 0 :(得分:2)
您无法通过索引列表来选择要分配的变量。分配到[x, y, z][1]
不会分配给y
;它将列表中的列表单元格分配给刚被丢弃。
而不是你正在做的所有事情,摆脱大部分变量,直接构建返回的列表:
def parse_options(options):
return [d.get(char)
for d, char in zip([dir_options, file_options, name_options], options)]
dir_pref
,file_pref
和name_pref
变量完全没必要。此外,如果密钥不存在,get
默认返回None
,因此您无需进行明确检查。