python - “for”循环未正确循环
问题描述
a=[['kyle','movie_1','c_13'],
['blair','food','a_29'],
['reese','movie_2','abc_76']]
b=['df.movie_1',
'ghk.food',
'df.movie_2']
x = {}
for i in b:
y = i.split('.')
for j in a:
if y[1] in j : x[y[0]]=j
print(x)
这是我检查列表中是否有字符串的代码a
。我得到的输出是
{'df': ['reese', 'movie_2', 'abc_76'], 'ghk': ['blair', 'food', 'a_29']}
我想要的输出是
{'df': [['kyle','movie_1','c_13'],['reese', 'movie_2', 'abc_76']], 'ghk': ['blair', 'food', 'a_29']}
解决方案
原因是该值存在时会被覆盖x['df']
。
您可以使用 defaultdict 来保存它们(虽然与您的预期略有不同。但这很容易):
from collections import defaultdict
a = [['kyle', 'movie_1', 'c_13'],
['blair', 'food', 'a_29'],
['reese', 'movie_2', 'abc_76']]
b = ['df.movie_1',
'ghk.food',
'df.movie_2']
x = defaultdict(list)
for i in b:
y = i.split('.')
for j in a:
if y[1] in j:
x[y[0]].append(j)
print(x)
# defaultdict(<class 'list'>, {'df': [['kyle', 'movie_1', 'c_13'], ['reese', 'movie_2', 'abc_76']], 'ghk': [['blair', 'food', 'a_29']]})
推荐阅读
- javascript - 用不带重音的等效字符替换带重音的字符
- php - 来自 url 的文件路径在重定向时消失
- vba - 使用 Excel VBA 导出后命名 PDF
- c++ - 使用 WinGDI 旋转 HDC
- java - 无法使用 Java / Java8 向大型 Zip 添加条目
- chatbase - 如何在 Chatbase 中查看自定义事件?
- python - Django CreateView self.object 返回无
- javascript - 带有onchange的循环函数内的计数器变量
- firebase - 在 firebase 实时数据库上存储聊天日志的最具可扩展性和性能的解决方案是什么?
- sql - EF 查询的查询优化