1

1 つのスペースで区切られた一連の文字列がすべて 1 行に並んでいます。最初の文字列をキーとして、残りの値のセットを使用して、これらの値をマップに格納したいと思います。やっています

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

最後の要素を除外することを除いて、これは機能します。見つけた

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

動作しますが、前者のようなものを使用したいです

(たとえば、input は "key value1 value2 value3" のようなものです。
{'key' : ['value1', 'value2', 'value3']} のようなマップが必要です
が、現在のメソッドでは
{'key' : [ 'value1', 'value2']} )

4

2 に答える 2

7

これは、移動先のインデックスとして指定-1しているためです。リストの最後に移動するには、単にインデックスを省略してください。例えば:

input[1:]

リストのスライス構文の詳細については、こちらを参照してください。

Python 3.x を使用している場合は、拡張された iterable unpackingを使用することもできます (これははるかに優れていて読みやすいと思います) 。

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 に答える