不同列表长度索引的Python变量赋值

时间:2017-08-08 18:44:33

标签: python-3.x list variables data-structures

我有大量数据集,我正在逐行分析。示例数据行为100 0 0 100 1 0 100 2 0 100 3 0 100 4 0。此处,100后面的两个条目包含有关数据的信息(解密为英语)。因此,100之后的第一个条目总是根据其值(0,1,2,3或4)进行解密,而100之后的第二个条目总是根据条目的值进行解密1(即如果条目1 = 0条目2 = ____,或条目1 = 1条目2 = _____等)。

我已将数据行存储在data中作为列表。 100后总是有两个条目,但我不能确定给定行中会出现多少100 - 示例数据行有5个100个实例,但其他行有任意数量的实例。

当前代码:(忽略column,这是我用来建立data的原始列表)

data = [num for num in column[2:] if num != 100]
entry1 = data[1]
entry2 = data[2]
info_dict1 = {0: 'absolute', 1: 'minimum', 2: 'maximum', 3: 'median', 4: 'mode'}
info1 = info_dict1.get(entry1, 'not found')
info_dict2 = {'absolute': 'value', 'minimum': 'increase', 'maximum': 'increase'}
info2 = info_dict2.get(info1, 'not found')
print(info1, info2)

我无法将此问题用于100未知事件的数据行。我也在努力寻找准确的Pythonic解决方案。

对于提供的示例数据,我希望结果如下: absolute value minimum increase maximum increase median not found mode not found

注意非常重要的是,100之后的条目并不总是像提供的示例行那样排序(即第一个条目可以是任何数字0-4,第二个条目将根据不同而变化第一个条目)

1 个答案:

答案 0 :(得分:1)

尝试此解决方案以获得您期望的答案。

column = [100, 0, 0, 100, 1, 0, 100, 2, 0, 100, 3, 0, 100, 4, 0]
data = [num for num in column if num != 100] 
info_dict1 = {0: 'absolute', 1: 'minimum', 2: 'maximum', 3: 'median', 
4: 'mode'}
info_dict2 = {'absolute': 'value', 'minimum': 'increase', 'maximum': 
'increase'}
info1 = []

#Iterating the list in step of 2
for item in data[::2]:
    result = info_dict1.get(item, 'not found')
    info1.append(result)
    info1.append(info_dict2.get(result, 'not found'))

print(info1)