python:如何通过变量的多个实例创建/迭代列表
问题描述:
我正在使用pymarc库。我的问题是,如何处理一个变量的多个实例,要么建立一个列表,要么反复遍历它们?python:如何通过变量的多个实例创建/迭代列表
可以通过将字段编号添加到record
变量来访问MARC字段。例如,我在一个记录中有三个856字段的实例,可以作为record['856']
访问。但只有一审通过。
指定变量record['856'][0]
或record['856'][1]
等,不起作用。
我曾尝试创建一个列表,该列表如下所示,但没有奏效
from pymarc import MARCReader
with open('file.mrc', 'rb') as fh:
reader = MARCReader(fh)
for record in reader:
"""get all 856 fields -- delete unwanted 856 fields
=856 40$uhttp://url1.org
=856 40$uhttp://url2.org
=856 40$uhttp://url3.org
"""
eight56to956s = []
eight56to956 = record['856']
eight56to956s.append(eight56to956)
print eight56to956s
我知道我会如何在PHP这样做,但我没有得到我的头周围Python语法甚至在网上搜索正确的东西。
答
你需要一本字典,在这里可以设置856的键,然后要进行标记,以856
your_856 = {856: ['=856 40$uhttp://url1.org', '=856 40$uhttp://url2.org', '=856 40$uhttp://url3.org']}
您现在可以使用index
访问像值值的列表,这里是为例
print(your_856[856][1])
此输出
=856 40$uhttp://url2.org
谢谢!例如,有三个网址,但该号码可能会有所不同,且值不知道。如果我想构建字段的所有实例字典,我如何捕获未知值?我试着'a = {} key =“856” a.setdefault(key,[]) a [key] .append('[856'])'但这不起作用 – mattrweaver
对于其他部分我的问题,得到所有的领域:'在record.get_fields('856')的字段: print field' – mattrweaver