将切片列表项动态附加到python中的字典

时间:2018-12-18 21:19:02

标签: python python-3.x list dictionary slice

我有一个带有预定义键的结果字典,该键应基于数组的切片填充而无需显式访问字典键,下面是我的方法的一个示例

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]切片,则意味着我将必须分别访问每个字典键并对其进行更新,而不是对其进行循环(这是所需的方法)

2 个答案:

答案 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'}