Python 循环 : Precise way to handle mapping matching lists

标签 python

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

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/

相关文章:

python - _io.TextIOWrapper'对象不可调用

python - 找不到数据文件,在 confusable_homoglyphs/categories.py 中生成数据文件失败

python - 如何配置请求超时触发 "connection cannot be established"错误

python - 按行和列的总和对 Pandas 数据透视表进行排序

python - 无法在heroku上恢复postgres转储

python - mariadb游标参数标记问题

Python SQL数据库查询给出 "Too few parameters"错误

python - 从字符串中提取特定字符

python - 如何确定我制作的随机 2D 地牢中正确的墙 block ?

python - 在 Python 中复制 SQL 的 'Join'