web-dev-qa-db-ja.com

既存の辞書キーに値を追加する方法Python

キー名、開始時間、終了時間、辞書の4つのパラメーターを受け取る関数を作成しようとしています。この関数を複数回実行するため、開始時間と終了時間からTupleを作成し、それをタプルのリストに追加する必要があります。次に、タプルのリストの特定の部分を特定のキー名に配置しようとしています。

出力が次のようになることを示すと良いと思います:

courses = insertIntoDataStruct(“CS 2316”, “1505”, “1555”, courses)  
courses = insertIntoDataStruct(“CS 2316”, “1405”, “1455”, courses)  
courses = insertIntoDataStruct(“CS 2316”, “1305”, “1355”, courses)  
courses = insertIntoDataStruct(“CS 4400”, “1405”, “1455”, courses)  
courses = insertIntoDataStruct(“CS 4400”, “1605”, “1655”, courses)    
print(courses)  


{'CS 2316': [(1505, 1555), (1405, 1455), (1305, 1355)], 'CS 4400': [(1405, 
1455), (1605, 1655)]}

これはこれまでの私のコードです:

aDict = {}
tupleList = []
def insertIntoDataStruct(name,startTime,endTime,aDict):       
    timeTuple = Tuple([startTime, endTime])  
    tupleList.append(timeTuple)
    aDict[name] = tupleList
    return aDict

これにより、すべての値がすべてのキーを持つ辞書が得られることはわかっていますが、出力に表示されるように、追加する各値が辞書に追加されるようにする方法はわかりません。私は多くのランダムなことを試みましたが、私はまだこれに固執しています。 :(

10
OmicronAlpha

これを試して:

def insertIntoDataStruct(name,startTime,endTime,aDict):
    if not name in aDict:
        aDict[name] = [(startTime,endTime)]
    else:
        aDict[name].append((startTime,endTime))

次にディクテーションを定義します。

courses = {}

コースの追加を開始します。

insertIntoDataStruct("CS 2316", "1505", "1555", courses)
insertIntoDataStruct("CS 2316", "1405", "1455", courses)
insertIntoDataStruct("CS 2316", "1305", "1355", courses)
insertIntoDataStruct("CS 4400", "1405", "1455", courses)
insertIntoDataStruct("CS 4400", "1605", "1655", courses)
15
Pooya Eghbali

代わりにdefaultdictを使用することもできます。

from collections import defaultdict

def insertIntoDataStruct(name,startTime,endTime,aDict):
    aDict[name].append((int(startTime), int(endTime)))
    return aDict

courses = defaultdict(list)
courses = insertIntoDataStruct("CS 2316", "1505", "1555", courses)
courses = insertIntoDataStruct("CS 2316", "1405", "1455", courses)
courses = insertIntoDataStruct("CS 2316", "1305", "1355", courses)
courses = insertIntoDataStruct("CS 4400", "1405", "1455", courses)
courses = insertIntoDataStruct("CS 4400", "1605", "1655", courses)


print courses == {'CS 2316': [(1505, 1555), (1405, 1455), (1305, 1355)], 'CS 4400': [(1405, 1455), (1605, 1655)]}
print courses

おそらく、関数さえ必要ないでしょう。

from collections import defaultdict
courses = defaultdict(list)
courses["CS 2316"].append((int("1505"), int("1555")))
courses["CS 2316"].append((int("1405"), int("1455")))
courses["CS 2316"].append((int("1305"), int("1355")))
courses["CS 4400"].append((int("1405"), int("1455")))
courses["CS 4400"].append((int("1605"), int("1655")))
5
Graeme Stuart