如何在Dart中与多个地图(字典)相交



无论地图中每个元素的值如何,我都有一个由多个地图(字典(组成的列表

var list = [{'a':1, 'b':1, 'c':7},
{'J':8, 'b':2, 'e':2},
{'l':1, 'b':3, 'r':4},
{'u':9, 'k':7} ];

请注意,我不知道列表中会有多少张地图。它可以是0,也可以是1000(我从JSON文件中读取(。

我想把它们相交,这样输出就会是这样的:

var res = 'b';

我在python中使用了以下方法:

res = set.intersection(*map(set, list))

下面的方法就可以了。它通过将贴图关键点一个接一个地相交来折叠列表。

final list = [
{'a': 1, 'b': 1, 'c': 7},
{'J': 8, 'b': 2, 'e': 2},
{'l': 1, 'b': 3, 'r': 4},
{'u': 9, 'b': 7}
];
final res = list.fold<Set<String>>(
list.first.keys.toSet(),
(result, map) => result.intersection(map.keys.toSet()),
);
print(res); // Prints: {b}

最新更新