python - 在Python列表[Dict]中按字典ID查找元素

标签 python python-3.x

我遇到的问题如下:我得到了 JSON 数据,我已经将其转换为字典。 JSON 数据如下所示:

[{"text": "foo1", "value": 1},
{"text": "foo2", "value": 2}]

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

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

现在我的问题是获取文本的最有效方法是什么。

因为我尝试的是

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]

尽管我不得不承认我对这些解决方案并不是很满意......

最佳答案

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

def lookup(value):
    return next(v['text'] for v in json if v['value'] == value)

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

关于python - 在Python列表[Dict]中按字典ID查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61662984/

相关文章:

python - 包含编号和名称排序的列表

python - 用dask阅读时如何跳过坏行?

python - 将参数传递给 Docker 容器中的 Python argparse

python - 嵌套字典到数据框,将字典键保留为列而不是索引

Python 3.7.1 try except block 在命令行中以错误的顺序发生

Python 3 - urllib.request - HTTPError

python - 如何使用 2 个 pandas DataFrame 计算 IOU(重叠)

python - spaCy模糊匹配错误: "extra fields not permitted"

python - 只能连接 str 不能列表到 str

python - Fiddler 可以更改 Python 请求模块的返回吗?