Python循环:处理映射匹配列表的精确方法

2024-06-01 06:42:03 发布

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

一个函数返回两个逻辑映射为一对一的列表。假设

name = ["facebook", "twitter", "myspace"]
hits = [4000, 2500, 1800]

因此,facebook的点击率是4000,twitter是2500,myspace是2500。在

我想把这两个单独的列表转换成字典列表

^{pr2}$

我的解决方案是:

^{3}$

有没有一种更优雅的处理逻辑一对一映射的方法,或者我的解决方案是否精确?在


Tags: 方法函数name列表facebook字典twitter逻辑
3条回答

你可以:

[{"name": n, "data": [h]} for n, h in zip(name, hits)]

虽然这符合您的要求,但这里的数据结构可能比您实际需要的多。考虑:

^{pr2}$

这将在更易于访问的数据结构中提供相同的数据集。在

Efficient bidirectional hash table in Python?相似但不完全相同

您应该只使用两个字典,当您进行更新时,将更新应用于这两个字典。在

另外,这里有一个逻辑上的不一致:要么您的函数不是一对一的,要么您不需要在列表中保留data: [...],因为只能有一个值。在

如果确实需要将其转换为字典列表,请使用zip,如https://stackoverflow.com/a/8600534/711085中所述

处理一对一关系最简单、最快的方法是制作两个字典:

>>> name = ["facebook", "twitter", "myspace"]
>>> hits = [4000, 2500, 1800]
>>> name2hits = dict(zip(name, hits))
>>> hit2name = dict(zip(hits, name))

相关问题 更多 >