在python dict中更改key并仅打印带有value的键值
我试图操纵一个口述:在python dict中更改key并仅打印带有value的键值,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我试图操纵一个口述: op = {'File:Directory': '/var/tmp/Mkbib/Trial2', 'PDF:Title': 'Antiferromagnetic-ferromagnetic transition in FeRh', 'PDF:Author': 'V. L. Moruzzi and P. M. Marcus', 'File:FileSize': '636 kB', 'File:FileInodeChangeDate': '2016:08:13 19:45:15
op = {'File:Directory': '/var/tmp/Mkbib/Trial2', 'PDF:Title': 'Antiferromagnetic-ferromagnetic transition in FeRh', 'PDF:Author': 'V. L. Moruzzi and P. M. Marcus', 'File:FileSize': '636 kB', 'File:FileInodeChangeDate': '2016:08:13 19:45:15+02:00'}
fields = ["author", "year", "journal", "title", "publisher"]
new_op = {}
for field in fields:
# new_op = dict((field, value) for key, value in op.items() if field in key.lower())
new_op[field] = value for key, value in op.items() if field in key.lower())
print(new_op)
我的目标是将op
的键从fields更改为matching(如果有)字段,并使用新的键创建新的\u op,如果它有匹配的键,则创建值
因此,在上面的示例中,我的新_op应该是:
new_op = {'title': 'Antiferromagnetic-ferromagnetic transition in FeRh', 'author': 'V. L. Moruzzi and P. M. Marcus'}
注释行正在运行,但显然为每个项目创建了新的dict,并且为所有循环打印,这一点很明显。您可以在此处使用字典理解
op = {
'File:Directory': '/var/tmp/Mkbib/Trial2',
'PDF:Title': 'Antiferromagnetic-ferromagnetic transition in FeRh',
'PDF:Author': 'V. L. Moruzzi and P. M. Marcus',
'File:FileSize': '636 kB',
'File:FileInodeChangeDate': '2016:08:13 19:45:15+02:00'
}
fields = [
'author',
'year',
'journal',
'title',
'publisher'
]
new_op = {
field: value for field in fields
for key, value in op.items() if field in key.lower()
}
print(new_op) # {'title': 'Antiferromagnetic-ferromagnetic transition in FeRh', 'author': 'V. L. Moruzzi and P. M. Marcus'}
您可以创建一个新的键并删除旧的键。Dictionary comprehension创建一个OP明确不想要的新字典。我认为OP的语句不想为每个项创建一个新键,而不是为整个项创建一个新键。