我的python技能在这一方面很生疏。
我有一个物品清单。我想为他们创建一个ID并建立字典。
示例:
users = ["John","Peter","Alice"]
我想创建一个类似
的结果users_dict = {"u1":"John","u2":"Peter","u3":"Alice"}
我很难弄清楚如何创建一个for循环,该循环将动态创建u +整数。我可能正在处理列表中的大量项目。
任何指导将不胜感激。
答案 0 :(得分:12)
您可以将字典格式的字符串作为键来使用字典理解:
>>> {f"u{i}": user for i, user in enumerate(users, start=1)}
{'u1': 'John', 'u2': 'Peter', 'u3': 'Alice'}
这会遍历您的用户,为每个用户创建键u*
,其中*
是原始列表中的位置(根据您的期望输出从1开始),并为其分配用户名
答案 1 :(得分:2)
您可以尝试以下方法:
users = ["John","Peter","Alice"]
newusers = {}
for x in range(len(users)):
newusers['u' + str(x+1)] = users[x]
newusers
# {'u1': 'John', 'u2': 'Peter', 'u3': 'Alice'}
答案 2 :(得分:0)
您可以打开Jupyter笔记本并进行播放(至少需要注意文档)。
从列表开始
users = ["John","Peter","Alice"]
然后您需要列表的大小
len(users)
现在,您需要列出从1到大小的所有整数。您可以通过范围获得它:
range(len(users))
因此,要获取以1开头的所有整数的列表,请执行以下操作:
list(range(1, len(users) + 1))
但是为了以后的处理,您可能更喜欢这种形式:
[i + 1 for i in range(len(users))]
因为您可以轻松添加前缀:
['u'+str(i + 1) for i in range(len(users))]
现在,您合并两个列表:
zip(['u'+str(i + 1) for i in range(len(users))], users)
并享受您的字典:
dict(zip(['u'+str(i + 1) for i in range(len(users))], users))
答案 3 :(得分:-1)
这很简单
# initializing lists
test_values = ["John","Peter","Alice"]
hint = "u"
使用天真的方法 将列表转换为字典
res = {}
for index, value in enumerate(test_values):
res[hint+str(index+1)] = value
del test_values # memory efficient
打印结果字典
print ("Resultant dictionary is : " + str(res))
然后答案就像
{“ u1”:“约翰”,“ u2”:Peter“,” u3“:”爱丽丝“}