python - 在python中的一个循环中迭代两个字典

标签 python loops dictionary

我有两本字典。一个有 chapter_id 和 book_id:{99: 7358, 852: 7358, 456: 7358}。这里仅以一本书为例,其实还有很多。另一个相同的 chapter_id 和一些信息:{99: [John Smith, 20, 5], 852: [Clair White, 15, 10], 456: [Daniel Dylan, 25, 10]}。章节 ID 在所有书籍中都是唯一的。我必须以每本书从其包含的所有章节中获取信息的方式将其组合起来。类似于 {7358:[[99,852,456],[John Smith, Claire White, Daniel Dylan],[20,15,25],[5,10,10]]}。我还有一个已经有字典的文件,其中每本书都有它所有章节的 ID。我知道如何通过遍历两个词典(它们曾经是列表)来做到这一点。但这需要很长时间。这就是为什么它们现在是字典,而且我认为我可以只用一个循环遍历所有章节。但在我的脑海里,我总是回到书籍和章节的循环。非常感谢任何想法!最后的结果我会写在文件里,所以如果是嵌套字典或者其他什么的就不是很重要了。或者至少我是这么认为的。

最佳答案

如果您愿意使用其他包,那么您可能想看看 pandas,它可以让您轻松快速地做很多事情。这是一个基于您提供的数据的示例...

import pandas as pd
d1 = {99: 7358, 852: 7358, 456: 7358}
df1 = pd.DataFrame.from_dict(d1, "index")
df1.reset_index(inplace=True)

d2 = {99: ["John Smith", 20, 5], 852: ["Clair White", 15, 10], 456: ["Daniel Dylan", 25, 10]}
df2 = pd.DataFrame.from_dict(d2, "index")
df2.reset_index(inplace=True)

df = df1.merge(df2, left_on="index", right_on="index")
df.columns = ["a", "b", "c", "d", "e"]

# all data for 7358 (ie subsetting)
df[df.b == 7358]
# all names as a list
list(df[df.b == 7358].c)

关于python - 在python中的一个循环中迭代两个字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40489757/

相关文章:

javascript - 即时创建嵌套数组

c++ - 在程序选项中添加键值对

javascript - 样式化图像映射

python - 从python中的一串数字中找到奇数的总和

javascript - 那我们能得到当前的 promise 吗?

python - 如何更改 Kivy 中按钮的背景颜色?

php循环解决方案

vb.net - 我正在尝试估计我的 Dictionary(Of String, Long()) 的内存需求

python - PEP 8 : How should __future__ imports be grouped?

Python:当我明确给它两个参数时,为什么它说它至少需要 2 个参数(给定 1 个)?