繁体   English   中英

如果我在列表中有值但没有键,如何创建字典?

[英]How create a dictionary if I have its values in a list but I don't have its keys?

我需要创建一个字典。 我在列表中有它的值,但我没有它的键。 它的键只是数字(1,2,3,4 ...)。 “Lista”是一个包含值的列表。 代码如下:

nombres= ["Martin", "Milu","Anastasia", "Lupita", "Tomasa", "Pelusa", "Genoveva","Motita"]
tipos= ["canino", "canino", "felino", "felino", "felino", "canino", "bovino", "roedor"]
edades= [12, 9, 10, 8, 9, 2, 14, 1]
pesos= [33, 26, 4, 5, 5, 6, 106.4, 0.34]
numeros=["1","2","3","4","5","6","7","8"]
lista = []
lista.append(nombres)
lista.append(tipos)
lista.append(edades)
lista.append(pesos)
newlist=lista
diccionario = {}

## Dictionary 

lista = [[lista[col][row] for col in range(4)] for row in range(8)]

字典看起来像: {“1” : [Martín, “canino”, 12, 33] , “2” : [“Milú”, “canino”, 9, 26] , “3” : [“Anastasia” ,“ felino” , 10, 4] , “4” : [“Lupita” , “felino” , 8 , 5] ... }

您可以使用enumerate来获取列表中的数字。 您还可以使用zip来简化生成lista的代码:

nombres= ["Martin", "Milu","Anastasia", "Lupita", "Tomasa", "Pelusa", "Genoveva","Motita"]
tipos= ["canino", "canino", "felino", "felino", "felino", "canino", "bovino", "roedor"]
edades= [12, 9, 10, 8, 9, 2, 14, 1]
pesos= [33, 26, 4, 5, 5, 6, 106.4, 0.34]

output = dict(enumerate(zip(nombres, tipos, edades, pesos), start=1))
print(output)

# {1: ('Martin', 'canino', 12, 33), 2: ('Milu', 'canino', 9, 26),
#  3: ('Anastasia', 'felino', 10, 4), 4: ('Lupita', 'felino', 8, 5),
#  5: ('Tomasa', 'felino', 9, 5), 6: ('Pelusa', 'canino', 2, 6),
#  7: ('Genoveva', 'bovino', 14, 106.4), 8: ('Motita', 'roedor', 1, 0.34)}

如果您确实想使用numeros作为密钥,则可以改用嵌套zip

output = dict(zip(numeros, zip(nombres, tipos, edades, pesos)))
# {'1': ('Martin', 'canino', 12, 33), ...}

但是,通常人们可能更喜欢如下的数据结构:

keys = ["nombre", "tipo", "edad", "peso"]
output = [dict(zip(keys, info)) for info in zip(nombres, tipos, edades, pesos)]
print(output) # [{'nombre': 'Martin', 'tipo': 'canino', 'edad': 12, 'peso': 33}, ...]

print(output[0]['edad']) # 12

或者,假设名称是唯一的:

output = {nombre: {'tipo': tipo, 'edad': edad, 'peso': peso}
            for nombre, tipo, edad, peso in zip(nombres, tipos, edades, pesos)}
print(output) # {'Martin': {'tipo': 'canino', 'edad': 12, 'peso': 33}, ...}
print(output['Tomasa']['peso']) # 5

也许函数“枚举”会帮助你。 像这样的东西:

nombres= ["Martin", "Milu", "Anastasia", "Lupita", "Tomasa", "Pelusa", "Genoveva", "Motita"]

result = {key: value for key, value in enumerate(nombres, start=1)}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM