在NoSQL数据库中,数据结构根据需求而变化。在列表(List)中,数据以特定顺序存储,每个元素的位置都很重要。例如,要访问列表中的第一个元素,可以通过索引0来检索其值,这种顺序性使得访问变得可预测。
然而,当数据的顺序不重要时,字典(Dictionary,或键值存储)更为合适。考虑一个需要存储用户信息的场景,如年龄、地址、名字和姓氏。在这种情况下,这些字段的顺序并不重要。使用字典,您可以通过键直接访问特定的值,例如通过查询“first_name”键来检索名字,而无需知道姓氏或其他字段。
关键区别:
- 在列表中,值是以预定义的顺序索引(0, 1, 2, …)存储的,您通过位置访问数据。
- 在字典中,您定义自定义键与值的映射,允许通过键直接访问数据,而不依赖于顺序。
因此,对于需要灵活、基于键访问数据而不依赖于顺序的场景,字典是首选。
Python中的咖啡菜单 — 字典操作
- 创建咖啡菜单(字典)
coffee_menu = { "Espresso": "Bold shot!", "Latte": "Creamy delight",
{
"Espresso": "浓缩咖啡",
"Latte": "奶泡咖啡",
"Cappuccino": "泡沫经典",
"Mocha": "巧克力咖啡",
"ColdBrew": "顺滑冷萃",
"Americano": "浓缩咖啡 + 水",
"Macchiato": "浓缩咖啡之吻"
}
print(coffee_menu)
- 访问值(使用键)
print(coffee_menu['Espresso'])
输出:
浓缩咖啡一杯!
- 修改值
coffee_menu['Espresso'] = '小雷霆' print(coffee_menu)
输出:
{ 'Espresso': '小雷霆', 'Latte': '奶泡咖啡', 'Cappuccino': '泡沫经典', 'Mocha': '巧克力咖啡', 'ColdBrew': '顺滑冷萃', 'Americano': '浓缩咖啡 + 水', 'Macchiato': '浓缩咖啡之吻' }
- 遍历字典
- 仅键
for coffee in coffee_menu: print(coffee)
输出:
Espresso Latte Cappuccino Mocha ColdBrew Americano Macchiato
- 键和值(方法 1)
for coffee in coffee_menu: print(coffee, ":", coffee_menu[coffee])
- 键和值(方法 2)
for key, value in coffee_menu.items(): print(key, ":", value)
- 添加项目
coffee_menu["Flat White"] = "丝滑顺滑" print(coffee_menu)
- 移除项目
- 使用 pop(key)
coffee_menu.pop('Espresso') print(coffee_menu)
输出:
{ 'Latte': '奶泡咖啡', 'Cappuccino': '泡沫经典', 'Mocha': '巧克力咖啡', 'ColdBrew': '顺滑冷萃',
'Americano': '浓缩咖啡 + 水',
'Macchiato': '浓缩咖啡之吻'
}
- 使用 popitem()
移除最后插入的项目。
coffee_menu.popitem() print(coffee_menu)
示例输出:
{ 'Espresso': '浓烈的咖啡!', 'Latte': '奶油美味', 'Cappuccino': '泡沫经典', 'Mocha': '巧克力咖啡', 'ColdBrew': '顺滑的冷萃', 'Americano': '浓缩咖啡 + 水' }
⚠️ 注意:如果字典为空,popitem() 将引发 KeyError。
- 使用 del 语句
del coffee_menu["Latte"] print(coffee_menu)
📝 注意:
每个操作都是单独进行演示的,因此字典内容在每个输出中可能看起来不同。在实际程序中,通常会根据需要将这些操作链式调用。