Python 在不一致列表字典中循环
我正在解析xml并将其转换为字典。 在我的字典旁边会是这样的Python 在不一致列表字典中循环,python,for-loop,dictionary,Python,For Loop,Dictionary,我正在解析xml并将其转换为字典。 在我的字典旁边会是这样的 'directories': {'dirname': 'D:\\directory\\subdir'}, 或 如何循环浏览这本词典。 目前,我正在这样做,只有当它有多个元素时,它才能很好地工作。我应该通过循环检查dirname是元素列表还是元素列表?或者有什么类似于蟒蛇的方法来实现这一点 rules = [] for v in args["directories"]["dirname"]: rules.append(os.p
'directories': {'dirname': 'D:\\directory\\subdir'},
或
如何循环浏览这本词典。
目前,我正在这样做,只有当它有多个元素时,它才能很好地工作。我应该通过循环检查dirname是元素列表还是元素列表?或者有什么类似于蟒蛇的方法来实现这一点
rules = []
for v in args["directories"]["dirname"]:
rules.append(os.path.join(v, "*", "*"))
输出:
对于输入“目录”:{“目录名”:['D:\\directory1\\subdir1',
'D:\\directory2\\subdir2']},
对于输入'directories':{'dirname':'D:\\directory\\subdir'}
请将我视为python新手您可以检查args[directories][dirname]的类型并相应地处理:
rules = []
dirnames = args["directories"]["dirname"]
if isinstance(dirnames, basestring):
rules.append(os.path.join(dirnames, "*", "*"))
elif isinstance(dirnames, list):
for v in dirnames:
rules.append(os.path.join(v, "*", "*"))
如果我想为'String'和'list'类型调用相同的函数,该怎么办?这不是一个冗余代码吗?@debianese啊,我明白了,再检查一下我的答案。您不会有多余的代码,因为每种情况需要不同的行为。
rules[] = ['D:\\directory1\\subdir1\\*\\*', 'D:\\directory1\\subdir1\\*\\*']
['D\\*\\*', ':\\*\\*', '\\*\\*', 'd\\*\\*', 'i\\*\\*', 'r\\*\\*', 'e\\*\\*', 'c\\*\\*', 't\\*\\*', 'o\\*\\*', 'r\\*\\*', 'y\\*\\*', '\\*\\*', 's\\*\\*', 'u\\*\\*', 'b\\*\\*', 'd\\*\\*', 'i\\*\\*', 'r\\*\\*']
rules = []
dirnames = args["directories"]["dirname"]
if isinstance(dirnames, basestring):
rules.append(os.path.join(dirnames, "*", "*"))
elif isinstance(dirnames, list):
for v in dirnames:
rules.append(os.path.join(v, "*", "*"))