所以,我有一个看起来像这样的列表:
ids = [123, 127]
我想将这些 id 与字典列表中的“id”值相匹配。然后,我想将这些词典的特定字段写入新的词典列表。这是字典的原始列表:
oldDicts = [
{
"id": 120,
"name": "Syrup",
"units": 105,
},
{
"id": 123,
"name": "Honey",
"units": 175,
},
{
"id": 127,
"name": "Wax",
"units": 179,
},
{
"id": 207,
"name": "Grease",
"units": 648,
}
]
所需的新词典列表如下所示:
newDicts = [
{
"id": 123,
"name": "Honey",
},
{
"id": 127,
"name": "Wax",
}
]
我知道我可以遍历列表中的值并使用字典 get 方法提取特定值,然后使用 append 方法将值作为字典附加到列表中:
itemID = int()
itemName = ""
newDicts = []
for item in oldDicts:
itemID = item.get("id")
itemName = item.get("name")
interimDict = {itemID:itemName}
newDicts.append(interimDict)
但是,我对如何在此之前添加一个步骤以仅将此逻辑应用于 oldDicts“id”键等于 ids 列表中的值([“123”,“127”])的字典感到困惑。< /p>
答案 0 :(得分:1)
这是一种可能的单行解决方案:
newDicts = [{'id': dct['id'], 'name': dct['name']}
for dct in oldDicts if dct['id'] in ids]
答案 1 :(得分:1)
您只需要添加一个 if 语句来检查列表中的 ID。
ids = [123, 127]
itemID = int()
itemName = ""
newDicts = []
for item in oldDicts:
itemID = item.get("id")
itemName = item.get("name")
if itemID in ids:
interimDict = {itemID:itemName}
newDicts.append(interimDict)
print(newDicts)
答案 2 :(得分:-2)
itemID = int()
itemName = ""
newDicts = []
for item in oldDicts:
if item in [123, 127, 128]:
itemID = item.get("id")
itemName = item.get("name")
interimDict = {itemID:itemName}
newDicts.append(interimDict)
试试看,它只在项目是三个之一时追加