我是python的新手,并且一直在研究需要通过一些看起来像这样的复杂字典的东西。
var_data:
{
'pvc' : {
'files' : ['logs1.txt', 'logs2.txt']
'version' : 'v192.2'
},
'mci' : {
'files' : ['ld33r3.txt', 'rkkk3k3.txt']
'version' : 'v39.2'
},
'dac' : {
'files' : ['33.txt', 'logfile3.txt']
'version' : 'v32.2'
}
}
我正在努力了解这个参考是怎样的。 基本上我的代码应该能够有一个if条件来查看这些数据,并根据它上面的值为“文件”做特定的条件语句。 例如 'dac':{
真的很感激这方面的任何指导......
欢呼声 卡比尔
答案 0 :(得分:1)
我正在努力了解这个参考资料。
你有一个字典,其中包含3个字典,每个字典包含一个字符串列表和一个字符串。
我的代码应该能够有一个if条件来查看这些数据,并为"文件"做特定的条件语句。取决于它上面的价值......例如' dac'
你可以循环它:
for k, v in var_data.iteritems():
if k == 'pvc':
# do stuff. Your files list is in v['files']
elif k == 'mci':
# do other stuff
elif k == 'dac':
# do other stuff
答案 1 :(得分:0)
不确定,除非你用我在评论中写的内容更新你的问题,我想这就是你想要的? : -
def process_files(files):
"""
Do some processing on a list of files,
specified by their names
"""
for file_name in files:
with open(file_name, 'r+') as file: # Will work if script in same dir as the files. Else, make the absolute path to file using file_name, and put that instead of just file_name
file_content = file.read()
# Do whatever else.
# Perhaps, read the documentation examples
# first, get a feeling, then come back
for key in var_data: # For each key in your dict, (iteration happening here)
if key == 'pvc':
# do something on var_data[key]
files = var_data[key]['files'] # Get your list ['file1.txt', ..]
process_files(files) # process this list of files in some func.
elif key == 'mci':
# do something else
elif key == 'dac':
# and so on.
另外,你的字典构造不好。它在files
键的末尾缺少逗号'值。 var_data:
是错误的。
答案 2 :(得分:0)
听起来你在问如何从字典中提取键值对。 iteritems()可能是语法最紧凑的方式。这是一个例子:
var_data = {
'pvc': {
'files': ['logs1.txt', 'logs2.txt'],
'version': 'v192.2'
},
'mci': {
'files': ['ld33r3.txt', 'rkkk3k3.txt'],
'version': 'v39.2'
},
'dac': {
'files': ['33.txt', 'logfile3.txt'],
'version': 'v32.2'
}
}
for filetype, data in var_data.iteritems():
for filename in data['files']:
print 'Processing {} as type {}'.format(filename, filetype)
答案 3 :(得分:0)
首先,字典有一些无效的语法,所以你不能用它来做,因为这不是一个有效的Python字典。
例如我将采取第一部分,但整个字典中存在同样的问题。
这就是你所拥有的:
var_data : {'pvc' : {'files' : ['logs1.txt', 'logs2.txt'] 'version' : 'v192.2'}
如果您运行此操作,则会出现invalid syntax
错误。这就是你应该在},
后{em> ['logs1.txt', 'logs2.txt']
以及=
后var_data
而不是:
修复 {<1>}的方法。整个字典中的同样问题,请看下面的更正行:
var_data = {'pvc' : {'files' : ['logs1.txt', 'logs2.txt']}, 'version' : 'v192.2'}
现在,解决此问题后,如果您想要print
例如var_data['pvc']
,您将获得此输出:{'files': ['logs1.txt', 'logs2.txt']}
。如果您想查看字典的所有keys
,可以print
keys
这样:
print var_data.keys() #Python 2
print (var_data.keys()) #Python 3
输出将是:
['pvc', 'version', 'mci', 'dac']
至于if
语句,我不确定你要做什么,但现在至少你可以使用if
语句。
如果您想要准确解释if语句需要做什么,我会相应地更新我的答案。