一个函数返回两个逻辑映射一对一的列表。假设
name = ["facebook", "twitter", "myspace"]
hits = [4000, 2500, 1800]
因此,facebook 的点击量为 4000,twitter 为 2500,myspace 为 2500。
我想将这两个单独的列表转换为字典列表,例如
[
{name: 'facebook',data: [4000]},
{name: 'twitter',data: [2500]},
{name: 'myspace',data: [1800]}
]
我的解决方案是:
data = [
{"name":l, "data":[v]}
for idx1, l in enumerate(labels)
for idx2, v in enumerate(values)
if idx1 == idx2
]
是否有更优雅的方式来处理逻辑一对一映射,或者我的解决方案是否精确?
最佳答案
你可以这样做:
[{"name": n, "data": [h]} for n, h in zip(name, hits)]
虽然这可以满足您的要求,但这里的数据结构可能比您真正需要的要多。考虑:
>>> dict(zip(name, hits))
{'twitter': 2500, 'myspace': 1800, 'facebook': 4000}
这在更易于访问的数据结构中提供了相同的数据集。
关于Python 循环 : Precise way to handle mapping matching lists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8600516/