0

次の形式の数百のエントリを含む辞書があります。

>>>dict
{'1620': 'aaaaaa'}

「1620」などという名前の新しい空のリストを作成したいと思います。次のバリエーションを試しましたが、リストの作成時に使用する変数として eachkey を認識しません。代わりに、リストに文字通り「eachkey」という名前を付け、この例では「1620」という私のキーは新しいリストに接続されていません。

>>>for eachkey in dict.keys():
>>>    eachkey=[]
>>>
>>>eachkey
[]
>>>'1620'
1620

追加するために編集:辞書を作成すると同時にリストを作成できますか? この下に滑り込ませる?str(eachfile[-4:]) は、リストに名前を付けたいものです。

files=open(sys.argv[1])
dict={}
for eachfile in files:
    value=open(eachfile)
    key=str(eachfile[-4:])
    dict[key]=value
eachfile.close()

編集:それが必要な場合は、数字に沿って文字を追加しても問題ありません。

4

2 に答える 2

2

1620整数 1620 以外のオブジェクトを与えるように整数リテラルを変更することはできないと思います。同様に、文字列リテラルを変更して、文字列'1620'ではなくリストを与えることはできないと思います。

変数名の前にいくつかの文字を付けて有効な名前にすることで、それを行うことができます。たとえば、my1620の代わりに使用できます1620。これを行うことはお勧めしませんが、可能です:

>>> d = {'1620': 'aaaaaa'}
>>> for k,v in d.items():
...     locals()['my'+k] = []
>>> my1620
'aaaaaa'
于 2012-07-20T23:54:03.630 に答える
0

このような口述で:

d1 = {'foo':'bar', '1621':'hello'}

これを試してください:

d2 = dict((k,list()) for k in d1.keys())

d2 は次のとおりです。

{'1621': [], 'foo': []}

また、次のようにリスト リストを参照できます。

d2['1621'].append(20)
d2['foo'].append(5)
d2['foo'].append('zig')

d2を作る:

{'1621': [20], 'foo': [5, 'zig']}

ガレスが言ったように、自分が求めていることを本当にやりたいと思うことはほとんどありません。これはおそらくより良いです。

于 2012-07-21T17:32:38.137 に答える