如何有效地搜索列表中的项目?

Nip*_*ips 2 python

我有一个dicts列表:

[
    {"num": 60, "name": "A"}, 
    {"num": 50, "name": "B"}, 
    {"num": 49, "name": "C"}, 
    ... etc
]
Run Code Online (Sandbox Code Playgroud)

列表创建如下:

[[x, {}] for x in xrange(0, mylist[0]['num'])]

list:

[..., [50, {}], [51, {}], ... , [60, {}], ...,  [65, {}], ... etc]
Run Code Online (Sandbox Code Playgroud)

我会得到这样的东西:

[..., [50, {"num": 50, "name": "B"}], [51, {}], ..., [60, {"num": 60, "name": "A"}], ..., [65, {}], ... etc]
Run Code Online (Sandbox Code Playgroud)

怎么做?

Kas*_*mvd 5

您可以遍历列表并通过简单的索引获取相对数字:

>>> [[k['num'],k] for k in li]
[[60, {'num': 60, 'name': 'A'}], [50, {'num': 50, 'name': 'B'}], [49, {'num': 49, 'name': 'C'}]]
Run Code Online (Sandbox Code Playgroud)

如果您希望列表中包含缺少nums的空字典,则可以使用如下所示的列表推导,例如:

>>> l=[2,3,6,10]
>>> z=zip(l,l[1:])
>>> [t for i,j in z for t in range(i,j)]+[l[-1]]
[2, 3, 4, 5, 6, 7, 8, 9, 10]
Run Code Online (Sandbox Code Playgroud)