簡體   English   中英

Python,如果鍵已經存在,如何將鍵+數字添加到字典

[英]Python, How to add Key+Number to Dict if key already exists

我是初學者,所以這可能很愚蠢,但我無法弄清楚如何將新密鑰添加到字典中,如果密鑰已經在其中,而不會覆蓋它。

目前我有:

l1 = ["name = Carl",
"type = Fighterplane",
"name = wing fusulage",
"name = landing gear"]

並使用我的代碼我得到:

for i in l1:
    if "=" in i:
        i = i.split("=")
        key = i[0].strip()
        value = i[-1].strip()
        d1[key] = value
print(d1)

>>> d = {'name': 'landing gear', 
         'type': 'Fighterplane'}

但我想得到:

d = {"name":"Carl",
    "type":"Fighterplane",
    "name-1":"wing fusulage",
    "name-2":"landing gear"}

我一直在嘗試一些東西,並在密鑰已經在字典中時運行了一個 while 循環,但我只得到了“name-1”並覆蓋了“name-1”或“name-1-2-3-4”。 ..”。 這應該很難,因為我可以通過創建新的 Windows 文件夾並獲得“新文件夾(2)”來做到這一點,但我無法解決它並且搜索只提供了我的基本內容。

您可以使用字典理解:

r = {}
for l in l1:
    k, v = map(str.strip, l.split('='))
    r.setdefault(k, []).append(v)

result = {k if i==0 else f'{k}-{i}': e  for k, v in r.items() for i, e in enumerate(v)}

輸出:

{'name': 'Carl',
 'name-1': 'wing fusulage',
 'name-2': 'landing gear',
 'type': 'Fighterplane'}

如果字典中的插入順序很重要:

r = {}
count = {}
for l in l1:
    k, v = map(str.strip, l.split('='))
    if k not in count:
        count[k] = 1
        r[k] = v
    else:
        r[f'{k}-{count[k]}'] = v
        count[k] += 1

r

輸出:

{'name': 'Carl',
 'type': 'Fighterplane',
 'name-1': 'wing fusulage',
 'name-2': 'landing gear'}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM