Python - 从第二个到最后一个元素获取子集

时间:2012-10-07 22:58:11

标签: python map set

我有一堆字符串,全部在一行上,由一个空格分隔。 我想将这些值存储在地图中,第一个字符串作为键,以及一组剩余值。 我正在尝试

map = {}
input =  raw_input().split()
map[input[0]] = input[1:-1]

除了省去最后一个元素外,还有效。 我找到了

map[input[0]] = input[1:len(input)]

有效,但我宁愿使用更像前者的东西

(例如,输入类似于“键值1值2值3” 我想要一张像地图一样的地图 {'key':['value1','value2','value3']}
但我目前的方法给了我 {'key':['value1','value2']} )

2 个答案:

答案 0 :(得分:5)

那是因为您指定-1作为要转到的索引 - 只需将索引留下以转到列表的末尾。 E.g:

input[1:]

有关列表切片语法的更多信息,请参阅here

注意一个替代方案(我觉得它更好,更易读),如果你使用的是Python 3.x,那就是使用extended iterable unpacking

key, *values = input().split()
map[key] = values

答案 1 :(得分:2)

myDict = {}

for line in lines:
    tokens = line.split()
    map[tokens[0]] = tokens[1:]

可替换地:

def lineToPair(line):
    tokens = line.split()
    return tokens[0],tokens[1:]

myDict = dict(lineToPair(x) for x in lines)