You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用wikidata.client获取Wikidata实体多值属性列表

问题说明

需求为获取Wikidata中部分作家实体的全量信息,测试用实体ID为Q39829。
原有代码在处理多值属性时返回结果不全:测试实体的子女属性(P40)共关联3个实体,运行代码仅能返回1个子女名称。
原代码片段:

from wikidata.client import Client
client = Client()
entity = client.get('Q39829', load=True)

# Spouse
spouse_prop = client.get('P26')
spouse = entity[spouse_prop]
print('Mother: ', spouse.label)

# Children
child_prop = client.get('P40')
child = entity[child_prop]
print('Children: ', dir(child))
print(child.label)
问题原因

使用wikidata.client库时,直接通过entity[属性对象]的方式取值,遇到多值属性只会返回第一个匹配结果,不会返回全量值集合。

修复方法

替换取值方式,调用实体对象的getlist()方法获取指定属性的所有关联值,该方法返回值为列表,无论属性是单值还是多值都能正常兼容,不会漏结果。
修复后可运行代码:

from wikidata.client import Client
client = Client()
entity = client.get('Q39829', load=True)

# 获取配偶信息(原代码此处标注有误,P26是配偶属性,母亲属性对应ID为P25)
spouse_prop = client.get('P26')
all_spouses = entity.getlist(spouse_prop)
print('配偶:')
for s in all_spouses:
    print(f'- {s.label}')

# 获取全部子女信息
child_prop = client.get('P40')
all_children = entity.getlist(child_prop)
print('\n子女:')
for c in all_children:
    print(f'- {c.label}')

运行后即可拿到所有关联的实体信息,解决多值属性结果不全的问题。

内容的提问来源于stack exchange,提问作者TiBrains

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 13:45:34