首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Python List[Dict]中通过字典-ID查找元素

在Python List[Dict]中通过字典-ID查找元素
EN

Stack Overflow用户
提问于 2020-05-07 16:32:21
回答 2查看 2.5K关注 0票数 2

我遇到的问题是:我得到了JSON-数据,我已经把它转换成了字典。JSON-数据如下所示:

代码语言:javascript
运行
复制
[{"text": "foo1", "value": 1},
{"text": "foo2", "value": 2}]

因此,我在Python中转换的json是json = [{'text': 'foo1', 'value': 1}, {'text': 'foo2', 'value': 2}]

这些字典中的文本是随机数据,可以交换任何内容,另一方面,值可以从1到无穷大被解释为一个固定和唯一的ID。

现在我的问题是,怎样才能最有效地写出课文。

因为我尝试的是

代码语言:javascript
运行
复制
foo1 = [v['text'] for v in json if json['value'] == 1][0]    # and
foo2 = {list(v.values())[1]: list(v.values())[0] for v in json}[2]

虽然我不得不承认我对这些解决方案并不满意.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-07 16:38:17

如果您需要通过获得多个项,最有效的方法是将这个dict列表转换为dict,其中value作为键,text作为值:

代码语言:javascript
运行
复制
d = { x['value']: x['text'] for x in dic }

现在,您只需使用d[n]value equal n查找text

票数 4
EN

Stack Overflow用户

发布于 2020-05-07 16:44:20

如果您需要进行多次查找,我会推荐Błotosmętek的答案,但是如果您只需要一个值,我建议:

代码语言:javascript
运行
复制
def lookup(value):
    return next(v['text'] for v in json if v['value'] == value)

这类似于您给出的代码,但最大的区别是,即使在找到了值之后,它也不必搜索整个列表,因为它使用生成器而不是列表理解。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61662984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档