如何使用同一对象中的另一项引用json对象中的项

2024-04-30 20:43:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含许多项的JSON对象,并且希望能够使用对象中的一个值来获取对象中的另一项。你知道吗

我想用“Abbv”搜索JSON对象,然后返回“Set”

[
    {"Abbv": "VIS", "Set": "Visions"},
    {"Abbv": "5ED", "Set": "Fifth Edition"},
    {"Abbv": "POR", "Set": "Portal"},
    {"Abbv": "WTL", "Set": "Weatherlight"}
]

Tags: 对象jsonvisportalsetporeditionfifth
3条回答

你是说这样的事吗?你知道吗

objects = [
    {"Abbv": "VIS", "Set": "Visions"},
    {"Abbv": "5ED", "Set": "Fifth Edition"},
    {"Abbv": "POR", "Set": "Portal"},
    {"Abbv": "WTL", "Set": "Weatherlight"}
]

for obj in objects:
    if obj['Abbv'] == 'VIS':
        print(obj['Set'])

没有超短的解决方案。你将不得不遍历整个列表,不过如果你找到你想要的,你可以短路。你知道吗

您可以使用以下函数执行此操作:

l = [
    {"Abbv": "VIS", "Set": "Visions"},
    {"Abbv": "5ED", "Set": "Fifth Edition"},
    {"Abbv": "POR", "Set": "Portal"},
    {"Abbv": "WTL", "Set": "Weatherlight"}
]
def search_for_abbv(abbv, l):
    """
    l: A list of dicts we want to search through.
    abbv: The abbreviation we want to find
    Returns None if nothing found else the abbreviation.
    """
    for item in l:
        if abbv == item['Abbv']:
            return item['Set']
temp = search_for_abbv('POR', l)
print(temp)

输出:

Portal

注意,我可能会使用一个tuples列表或一个namedtuples列表,如果这是您为节省内存所做的一切。你知道吗

json_objects = [
    {"Abbv": "VIS", "Set": "Visions"},
    {"Abbv": "5ED", "Set": "Fifth Edition"},
    {"Abbv": "POR", "Set": "Portal"},
    {"Abbv": "WTL", "Set": "Weatherlight"}
]

lookup = ('Abbv', 'POR')

for obj in json_objects:
    if lookup in obj.items():
        print(obj['Set'])  # 'Portal'

我想这是你想要的结果。您只需指定要搜索的成对查找,并尝试在JSON对象列表中找到它。找到它之后,访问这个对象的'Set'键。你知道吗

相关问题 更多 >