如何创建一个字典,其中键是python中变量的值?

时间:2017-06-14 18:46:44

标签: python dictionary

我的意思是以某种方式将这个伪代码翻译成python3代码: dict(itemName = itemRecipe)

到目前为止我尝试过:

1)

allItems = [{}]
itemName = 'Pancake'
itemRecipe = ['Eggs', 'Flour']
allItems[0].update(dict(itemName = itemRecipe))

这会产生一个数组,并且对象具有一个名为'itemName'的键,而不是'Pancake'

2)

allItems = [{}]
itemName = 'Pancake'
itemRecipe = ['Eggs', 'Flour']
allItems[0].update(dict(locals()[itemName] = itemRecipe))

给我一​​个SyntaxError: keyword can't be an expression

我无所适从。也许有人可以帮助我吗?

4 个答案:

答案 0 :(得分:5)

 allItems.update({itemName: itemRecipe})

但是在你的代码中allItems(btw camelcase在Python中并不公平)是一个List,所以你应该追加它

 allItems.append({itemName: itemRecipe})

如果你想让allItems成为一个dict,你可以这样做

 allItems = {}
 allItems[itemName] = itemRecipe

答案 1 :(得分:1)

list上没有名为update的属性,但是目前还不清楚你想用它做什么,但如果你想要的是一个单元素列表,其中包含一个字典的键是itemName,其对应值为itemRecipe,您只需allItems = [{itemName: itemRecipe}]即可。

答案 2 :(得分:0)

allItems = [{}]
itemName = 'Pancake'
itemRecipe = ['Eggs', 'Flour']
allItems[0][itemName] = itemRecipe
print(allItems)

答案 3 :(得分:0)

如果你正在进行 lot 的词典列表操作,你可以使用PLOD库:

from PLOD import PLOD

allItems = [{}]
itemName = 'Pancake'
itemRecipe = ['Eggs', 'Flour']

new_list = PLOD(allItems).\
    missingKey("itemName").\
    addKey("itemName", itemName).\
    addKey("itemRecipe", itemRecipe).\
    returnList()

此代码查找没有“itemName”键的所有字典条目。然后它将“itemName”和“itemRecipe”应用于该词典列表。

结果:

>>> new_list
[{'itemRecipe': ['Eggs', 'Flour'], 'itemName': 'Pancake'}]

或者,为了得到幻想:

>>> print (PLOD(new_list).returnString())
[
    {itemName: 'Pancake', itemRecipe: ['Eggs', 'Flour']}
]

如果你的代码充满了这样的操作,我只推荐这个库。如果这样做只需要很多开销。

这个库可以在pypi 2.7.x的PyPI和GitHub中找到。