我有一个字典列表,这是一本书的列表,它来自JSON文件。我有一本字典,它是一个空字和一个数字。如果书名以该书名开头,我想在字典中添加一个新键,该键的值就是数字。我有办法。
这个给我:name 'j' is not defined
import json
with open('book.json', 'r') as f:
books_dict = json.load(f)
empty_word = {
'The ' : '4',
'An ' : '3',
}
for book in books_dict:
if any(book["Title"].startswith(k,0) for k, j in empty_word.items()):
book['number'] = j
books_list.append(book)
这另一个什么都不做,我必须打断,看来这是问题所在:
import json
with open('book.json', 'r') as f:
books_dict = json.load(f)
empty_word = {
'The ' : '4',
'An ' : '3',
}
for book in books_dict:
for i, k in empty_word.items():
if book["Title"].startswith(i,0):
book['number'] = k
books_dict.append(book)
我是菜鸟,很明显我很想念东西。第一次来,如果有人可以引导我!
答案 0 :(得分:0)
第一个是范围错误。您正在尝试使用j
,但是j
仅用于您对any
函数的调用:
any(book["Title"].startswith(k,0) for k, j in empty_word.items())
这可以通过将其拆分为几个表达式来解决:
for k, j in empty_word.items():
if book["Title"].startswith(k,0):
book['number'] = j
books_list.append(book)
第二个原因是因为要在迭代范围内附加一个可迭代的。这几乎是普遍不利的,但您的案子看起来像错字。尝试将最后一行更改为books_list.append(book)
。