我的输入列表属于以下类型(请注意,它包含空字符串):
Input = ['NO', 'Part Number', '1', '12334', '2', '45fd33', '']
我需要创建一个字典列表(如果忽略空字符串)
[
{'NO': '1', 'Part Number': '12334'},
{'NO': '2', 'Part Number': '45fd33'}
]
到目前为止我尝试过:
dict(enumerate(new_name_list, start=1))
并得到以下输出:
{1: 'NO', 2: 'Part Number', 3: '1', 4: '12334', 5: '2', 6: '45fd33', 7: ''}
如何从列表中获得预期输出并排除空字符串值?
答案 0 :(得分:2)
你在这里问两个单独的问题。
要从列表中删除''
,您可以将其传递到list comprehension
>>> Input = ['NO', 'Part Number', '1', '12334', '2', '45fd33','']
>>> Input_Changed = [i for i in Input if i!='']
>>> Input_Changed
['NO', 'Part Number', '1', '12334', '2', '45fd33']
字符串的语法遵循一般规则,即前两个的奇数元素应为NO
,而偶数元素应为Part_Number
。
为此我们可以使用iter
技巧:
>>> i = iter(Input_Changed[2:])
>>> [{Input_Changed[0]:x,Input_Changed[1]:y} for x,y in zip(i,i)]
[{'Part Number': '12334', 'NO': '1'}, {'Part Number': '45fd33', 'NO': '2'}]
主要思想是iter
返回一个迭代器,因此每次传递元素时都会使用一个元素。因此,当zip
(当您传递与两个参数相同的迭代器时返回相邻元素)时,您将获得所需的输出。