String 在Python中将所有名称转换为标识符
假设我们有一个以字符串形式给出的人名列表String 在Python中将所有名称转换为标识符,string,list,python-2.7,dictionary,String,List,Python 2.7,Dictionary,假设我们有一个以字符串形式给出的人名列表 people = ["john", "mike", "patrick", "vince", "mike"] 我希望有一个列表,其中将使用该人员的其他标识符,而不是姓名,例如: people_ids = ["p1", "p2", "p3", "p4", "p2"] 我想指出两点: 1) id格式并不重要,编号可以从0开始,如果这使事情更简单的话 2) 当一个给定的名字被重复时,我希望相应的id也在people\u id 我如何做到这一点?很可能是在用字
people = ["john", "mike", "patrick", "vince", "mike"]
我希望有一个列表,其中将使用该人员的其他标识符,而不是姓名,例如:
people_ids = ["p1", "p2", "p3", "p4", "p2"]
我想指出两点:
1) id格式并不重要,编号可以从0开始,如果这使事情更简单的话
2) 当一个给定的名字被重复时,我希望相应的id也在people\u id
我如何做到这一点?很可能是在用字典里的东西,对吗?你在找这样的东西吗
people = ["john", "mike", "patrick", "vince", "mike", "foo"]
def build(l):
d = {}
i = 1
for p in people:
if not p in d:
d[p] = 'p' + str(i)
i += 1
yield d[p]
people_ids = list(build(people))
您想生成
人员ID
列表吗?使用人员=[“john”、“mike”、“patrick”、“vince”、“mike”]
您可以将vince称为人员[3]
。意思是他的“id”是3
。然后问题就变成了为什么这还不够?你能给我们一个输入和输出的样本,并使用重复的名称吗?@MartijnPieters是的,我想生成人员ID
,我目前没有任何样本输入,只是我在question@LennartRegebro很抱歉我不太明白你的意思comment@Xi谢谢你的回复,这似乎很好用。。。在for
的后面的第一行中,如果p不在d:
中,为什么不使用,而不是如果p不在d:
中,语法和逻辑是否存在差异?结果是一样的though@WolfgangKuehnex不在y中
和x不在y中
产生相同的字节码,因此使用哪个字节码无关紧要。这最终是个人喜好的问题。