python - Python,如果键已经存在,如何将键+数字添加到字典
问题描述
我是初学者,所以这可能很愚蠢,但我不知道如何将新密钥添加到字典中,如果密钥已经在其中,而不覆盖我它。
目前我有:
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'}
推荐阅读
- postgresql - Postgresql 中的日期/时间字段超出范围,小时字段超过 24 小时
- python-3.x - 我无法从其他文件夹导入模块
- php - 如何从数组中制作 1 个相同 id 的口袋
- java - Hibernate Envers 自定义侦听器不适用于 Spring Data JPA
- swift - 使用 CAGradientLayer 旋转 UIControl 不能正确更新 Swift
- ios - 如何在 Xcode 中编写集成测试?
- vue.js - VueJS:反向数据数组无效
- ios - 使用 Firebase 在 UITableView 中使用搜索
- html - 如何为 SVG 多边形设置动画以进行填充?
- javascript - 成功消息之前的简单加载