1

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

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

除了省略最后一个元素之外,它有效。我已经找到

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

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

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

4

2 回答 2

7

那是因为您指定-1要转到的索引 - 只需将索引放在外面即可转到列表的末尾。例如:

input[1:]

有关列表切片语法的更多信息,请参见此处

请注意,如果您使用的是 Python 3.x,另一种选择(我觉得它更好,更易读)是使用扩展的可迭代解包

key, *values = input().split()
map[key] = values
于 2012-10-07T22:59:37.927 回答
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)
于 2012-10-07T22:59:46.207 回答