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

Zai*_*han 4 python

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

name = ["facebook", "twitter", "myspace"]
hits = [4000, 2500, 1800]
Run Code Online (Sandbox Code Playgroud)

因此,facebook的点击量为4000,twitter 2500和myspace 2500.

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

[
  {name: 'facebook',data: [4000]},
  {name: 'twitter',data: [2500]},
  {name: 'myspace',data: [1800]}
]
Run Code Online (Sandbox Code Playgroud)

这样做的解决方案是:

data = [
    {"name":l, "data":[v]}
    for idx1, l in enumerate(labels)
    for idx2, v in enumerate(values)
    if idx1 == idx2
    ]
Run Code Online (Sandbox Code Playgroud)

是否有更优雅的方式来处理逻辑一对一映射或我的解决方案是否准确?

Gre*_*ill 13

你可以这样做:

[{"name": n, "data": [h]} for n, h in zip(name, hits)]
Run Code Online (Sandbox Code Playgroud)

虽然这符合您的要求,但这里的数据结构可能比您真正需要的更多.考虑:

>>> dict(zip(name, hits))
{'twitter': 2500, 'myspace': 1800, 'facebook': 4000}
Run Code Online (Sandbox Code Playgroud)

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