有没有更简洁的方法可以从python列表创建对?

时间:2020-03-04 09:55:53

标签: python list

我有一个列表,其中alias dps='docker ps --no-trunc --format "table{{.Names}}\t{{.CreatedAt}}\t{{.Command}}"' 在字符串 S 中。

x[0][0] = position of x[0][1]

我想创建一个元组列表,以便输出列表将是特定类型标记的开始和结束位置对-

x  = [[157, 'Start_Summary'], [1228, 'End_Summary'], [1233, 'Start_Skills'], [1540, 'End_Skills'], [1925, 'Start_Work'], [2392, 'profile_start'], [4378, 'profile_end'], [4451, 'profile_start'], [5368, 'profile_end'], [5759, 'profile_start'], [7000, 'profile_end'], [7000, 'End_Work']]

我尝试使用 for循环 if-else 语句,但是我正在寻找一种生成此类列表的Python方法。

1 个答案:

答案 0 :(得分:-1)

您可以将数据存储在collections.defaultdic中:

from collections import defaultdict

data = defaultdict(list)

positions = {'start', 'end'}
for n, s in x:
    p, t = s.lower().split('_')
    if p not in positions:
        p, t = t, p
    data[t].append(n)

[tuple(v[i: i + 2] ) for v in data.values() for i in range(0, len(v)-1, 2)]

输出:

[(157, 1228),
 (1233, 1540),
 (1925, 7000),
 (2392, 4378),
 (4451, 5368),
 (5759, 7000)]