我有一个带有预定义键的结果字典,该键应基于数组的切片填充而无需显式访问字典键,下面是我的方法的一个示例
my_list = ['a','b','c','d','e']
my_dict = {'first_item':'', 'middle_items':'','last_item':''}
for key in my_dict.keys():
value = my_list.pop()
my_dict.update({k:''.join(value)})
这种方法显然行不通,因为pop不能切片数组。而且,如果要使用切片,则必须显式访问字典变量并分配相应的列表片。
我尝试使用列表长度对列表进行切片,但是无法找到一般的解决方案,这是我的另一种方法
for key in my_dict.keys():
value = ''.join(my_list[:-len(my_list)+1])
del my_list[0]
my_dict.update({k:v})
如何以一般方式对列表进行切片,以将其拆分为第一项,最后一项和中间项?下面是更新后的字典的外观
my_dict = {'first_item':'a', 'middle_items':'b c d','last_item':'e'}
编辑:如果我使用[0],[1:-1]和[-1]切片,则意味着我将必须分别访问每个字典键并对其进行更新,而不是对其进行循环(这是所需的方法)
答案 0 :(得分:4)
如果您使用的是python 3,则应尝试以下成语:
my_list = ['a','b','c','d','e']
first_item, *middle_items, last_item = my_list
my_dict = dict(
first_item=first_item,
middle_items=' '.join(middle_items),
last_item=last_item
)
print(my_dict)
# {'last_item': 'e', 'middle_items': 'b c d', 'first_item': 'a'}
答案 1 :(得分:1)
要获取my_list
的一部分,请使用slice notation。
my_list = ['a', 'b', 'c', 'd', 'e']
my_dict = {
'first_item': my_list[0],
'middle_items': ' '.join(my_list[1:-1]),
'last_item': my_list[-1]
}
{'first_item': 'a',
'middle_items': 'b c d',
'last_item': 'e'}