[英]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.