python - 有没有办法避免嵌套循环
问题描述
我得到了两个不同的数据,我想知道是否有一种方法可以在不使用嵌套循环的情况下获取特定数据
firstdata = [[["key"],["value"]],
[[2],["two"]],
[[3],["three"]]]
seconddata = [[[key],["artimatic"]],
[[2],["0+2"]],
[[2],["1+1"]],
[[3],["0+3"]],
[[3],["1+2"]],
[[3],["2+1"]]]
//nested loop solution would look like this
for x in firstdata:
for y in seconddata:
print(x[1])
if x[0]==y[0]:
print(y)
是否有替代解决方案可以在不使用嵌套循环的情况下循环第二个数据?
解决方案
**好的,我假设 firstdata 和 seconddata 的数据结构相同:
firstdata_dict = {x[0][0]: x[1][0] for x in firstdata}
seconddata_dict = {}
for data in seconddata:
if not seconddata_dict.has_key(data[0][0]):
seconddata_dict[data[0][0]] = []
seconddata_dict[data[0][0]].append(data[1][0])
for key, value in firstdata_dict.items():
if seconddata_dict.get(key):
# key match add your algo
print seconddata_dict[key]
Output:
['0+2', '1+1']
['0+3', '1+2', '2+1']
['artimatic']
推荐阅读
- powershell - 如何在powershell中清除多个局部变量
- rust - 使用 activitystreams crate 获取 Mastodon 配置文件的发件箱
- javascript - 阿拉伯语的打字效果显示断开连接
- javascript - 如何更新 d3 中绑定数据的索引 (i)?
- php - 如何为 curl php 正确设置 json 字符串
- django - 在 Django / Wagtail 中导入/批量创建页面
- python-3.x - Python - 为什么我的 for 循环给了我一个 ValueError?
- r - 如果列中的值不同,则绑定两个表的行
- typescript - TypeScript 在通过方括号更新对象时指示 .ts(7053) 错误
- c - 以下会创建任何僵尸进程吗?