python - 使用布尔值进行查找以创建字典
问题描述
我有一个字典和一个列表:
labels = {'cat_01.jpg': ['cat'], 'Poodle_07927.jpg': ['poodle'], 'duck_02.jpg': ['duck']}
mylist = ['cat 63663' ,'dog 4636773' ,'wolf 87487','croc 1331', 'bird 01']
请注意len()
字典的不等于mylist
我正在看这个:
如果 mylist 的任何元素中存在的字典中的值“cat”说“cat 63663”
我希望将该元素附加到我的值中。
我正在寻找更新字典的输出:
label['cat_01.jpg'] = ['cat','cat 63663']
代替
label['cat_01.jpg'] = ['cat']
我无法迭代,因为两个迭代的长度不匹配。
解决方案
这是一种方法:
animal = [x.split('_')[0] for x in list(labels.keys())]
for element in mylist:
current_animal = element.split(' ')[0]
if current_animal in animal:
labels[list(labels.keys())[animal.index(current_animal)]].append(element)
使用 for 循环比使用字典更快,因为您不必为每个字典键遍历动物列表。更新是相反的,这是一个性能比较:
对于循环:
- 每个循环 5.21 µs ± 20.2 ns(平均值 ± 标准偏差。7 次运行,每次 100000 次循环)
@CristiFati 字典理解:
- 每个循环 965 毫秒 ± 56 毫秒(平均值 ± 标准偏差。7 次运行,每个循环 1 个)
推荐阅读
- azure-active-directory - Azure create servicePrincipal 导致权限不足,无法完成操作
- sql - 带有两个工作地点的员工 ID 案例的 SQL
- ios - 签署嵌入式框架在 Xcode 11.2.1 中不起作用
- google-cloud-firestore - 无法读取 null 的“uid”的属性
- sql - SQL Server 中每小时更新字段
- python - AWS-CDK 无法在 Python 中导入核心
- servicestack - ServiceStack RedisPubSubServer 会频繁进入 OnStop、OnInit、OnStart
- javascript - 单元测试具有回调函数的函数(请求模块)
- xml - 从 xml 子标签值设置 xsl-region-before foblock 中的值
- html - 使用 width % 和 padding-bottom % 时方形 div 的固定大小