gpt4 book ai didi

python - 访问嵌套字典中的数据时发生 KeyError

转载 作者:行者123 更新时间:2023-12-01 00:18:12 25 4
gpt4 key购买 nike

我有以下 Python 脚本:

lista_contatos = {
"1": {"nome": "Paul", "cel": "+9999999999", "cidade": "SP", "id_cidade": "449139"},
"2": {"nome": "Junior", "cel": "+999999999", "cidade": "SP", "id_cidade": "449139"}

}
n = len(lista_contatos)
i = int
i = 1
print(n)

while i <= n:
print(i)
print(lista_contatos[i]['nome'])
print(lista_contatos[i]['cel'])
i = i + 1

我面临的问题是,我需要先打印每个键的所有数据,然后再进行第二个数组打印。

问题是当我将计数器 i 添加为打印键时,出现错误。

有什么办法可以解决这个问题吗?

最佳答案

这个数据结构没有多大意义。如果您的键只是连续的数字并且您打算迭代元素,那么字典是错误的工具。 Lists (或 tuples ,如果需要不变性)正是为了您的预期目的而发明的,并且遍历连续的内存块比散列更有效并且在语义上更合适。

此外,for 循环是遍历列表的正确结构,而不是 while 循环,当停止条件不是计数器时,后者更合适。

lista_contatos = [
{"nome": "Paul", "cel": "+9999999999", "cidade": "SP", "id_cidade": "449139"},
{"nome": "Junior", "cel": "+999999999", "cidade": "SP", "id_cidade": "449139"}
]

for elem in lista_contatos:
print(elem['nome'], elem['cel'])

对于你原来的问题,由于整数是字典键的非法值,{"1": "foo"}[1] 会产生你的KeyError。您需要将 i 转换为字符串,

lista_contatos[str(i)]['cel']
# ^^^^^^

这应该感觉像是跳过了一个圈,并且是一个危险信号,表明数据结构的选择出了问题。

这并不是说循环字典不好,但它的工作方式是将字典变成 view object使用 some_dict.items()some_dict.keys()some_dict.values()。如果您使用的是 Python < 3.6,则无法保证排序(使用 collections.OrderedDict)。像 i 这样的计数器在任何情况下都不会进入图片。

i = int 的目的可能是声明一个类型。但是这个别名 int(用于转换的内置类型)是变量 i。你不需要像这样在 Python 中声明类型;只需编写 i = 1,Python 就会自动知道它是一个整数:

>>> i = 1      
>>> type(i)
<class 'int'>
<小时/>

什么时候真正使用字典?答案是每当您需要基于键值对快速查找相关项时,其中键是一些唯一的、可散列的标识符,而不是 0..n 中的顺序整数。想象一下产品库存,每个产品都以某个任意 UPC 或 SKU 编号作为键,其余产品数据作为属性字典。

关于python - 访问嵌套字典中的数据时发生 KeyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59149727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com