首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >列表字典中的搜索值

列表字典中的搜索值
EN

Stack Overflow用户
提问于 2017-04-28 14:03:53
回答 7查看 827关注 0票数 1

我有一个字典形式的列表,如下所示:

代码语言:javascript
运行
复制
[{0: [6]},
 {0: [1, 4, 5, 6]},
 {0: [3]},
 {2: [1, 13, 15]},
 {2: [8, 19]},
 {2: [8]},
 {2: [1, 23]},
 {2: [8, 26]},
 {2: [23]},
 {2: [23]},
 {2: [23, 34]},
 {2: [39]},
 {2: [23, 34, 1]},
 {2: [1, 42]},
 {2: [23, 34]},
 {2: [24]},
 {2: [15, 8]},
 {3: [5, 6, 8, 9]},
 {3: [0]},
 {3: [1]},
 {3: [5, 6, 13, 17, 18]},
 {3: [12]},
 {3: [2, 6, 9, 13, 15, 16]},
 {3: [4, 5, 6, 17, 20, 21, 22]},
 {3: [5, 12, 17, 20, 21, 26, 27]},
 {3: [2, 8, 9, 22, 26, 28]},
 {3: [4, 5, 6, 20, 21, 8, 1, 13, 32, 33]},
 {3: [16, 13]},
 {3: [9, 17, 20, 21, 27, 28, 32, 35, 36]},
 {3: [6, 9, 16, 8, 37, 38]},
 {3: [7, 9, 26, 27, 28, 29]},
 {3: [9, 22, 1, 34]},
 {3: [15, 25]},
 {3: [29, 1]},
 {3: [14, 20, 40]},
 {3: [14, 13, 41]},
 {3: [5, 32, 35, 36, 37, 38]},
 {3: [6, 21, 42]}]

像这样持续一段时间。第一个数字真的很重要。现在我想找到值'0','2‘和'3’,看看哪些值与此相关。

我最终想要的是查找不同的值并将所有连接到列表中的值保存起来。

为0:

代码语言:javascript
运行
复制
0: [6,1, 4, 5, 6,3]

我真不知道该怎么做。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2017-04-28 14:14:01

使用dict.setdefault()函数(对于所有值)的解决方案:

代码语言:javascript
运行
复制
d = {}
for i in l:
    k = list(i.keys())[0]
    d.setdefault(k, [])
    d[k] = d[k] + i[k]

print(d)

产出:

代码语言:javascript
运行
复制
{0: [6, 1, 4, 5, 6, 3], 2: [1, 13, 15, 8, 19, 8, 1, 23, 8, 26, 23, 23, 23, 34, 39, 23, 34, 1, 1, 42, 23, 34, 24, 15, 8], 3: [5, 6, 8, 9, 0, 1, 5, 6, 13, 17, 18, 12, 2, 6, 9, 13, 15, 16, 4, 5, 6, 17, 20, 21, 22, 5, 12, 17, 20, 21, 26, 27, 2, 8, 9, 22, 26, 28, 4, 5, 6, 20, 21, 8, 1, 13, 32, 33, 16, 13, 9, 17, 20, 21, 27, 28, 32, 35, 36, 6, 9, 16, 8, 37, 38, 7, 9, 26, 27, 28, 29, 9, 22, 1, 34, 15, 25, 29, 1, 14, 20, 40, 14, 13, 41, 5, 32, 35, 36, 37, 38, 6, 21, 42]}
票数 2
EN

Stack Overflow用户

发布于 2017-04-28 14:13:12

您有一个相当奇怪的数据结构,但在编写数据结构时,可以使用以下代码对其进行修改:

代码语言:javascript
运行
复制
list_of_dicts = [...]
output = dict()

for entry in list_of_dicts:
    for key in entry:
        if output.has_key(key):
            output[key].append(entry[key])
        else:
            output[key] = entry[key]

注意,这段代码并不是假定列表中的每个dict都只有一个键,因为在一般情况下,每个dict可能包含多个条目。此外,代码并不认为每个list元素都是唯一的,在这种情况下,一个集合可能更合适。

票数 1
EN

Stack Overflow用户

发布于 2017-04-28 14:10:44

你为什么不能这样把它们储存起来?

代码语言:javascript
运行
复制
{
 0 : [
    [6],
    [1,4,5,6]
    ...],
 1 : ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43682141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档