gpt4 book ai didi

python - 遍历列表中的条目并创建新列表

转载 作者:太空宇宙 更新时间:2023-11-04 03:30:07 25 4
gpt4 key购买 nike

我有一个看起来像这样的字符串列表

name=['Jack','Sam','Terry','Sam','Henry',.......]

我想创建一个新列表,其逻辑如下所示。如果第一次看到该条目,我想转到名称中的每个条目并为其分配一个编号。如果它被重复(如“Sam”的情况),我想为其分配相应的编号,将其包含在我的新列表中并继续。

newlist = []
name[1] = 'Jack'
Jack = 1
newlist = ['Jack']
name[2] = 'Sam'
Sam = 2
newlist = ['Jack','Sam']
name[3] = 'Terry'
Terry = 3
newlist = ['Jack','Sam','Terry']
name[4] = 'Sam'
Sam = 2
newlist = ['Jack','Sam','Terry','Sam']
name[5] = 'Henry'
Henry = 5
newlist = ['Jack','Sam','Terry','Sam','Henry']

我知道这可以用类似的东西来完成

u,index = np.unique(name,return_inverse=True)

但对我而言,重要的是遍历列表名称的各个条目并保持上面的逻辑。有人可以帮我解决这个问题吗?

最佳答案

尝试使用 dict并检查键是否已经与值配对:

name = ['Jack','Sam','Terry','Sam','Henry']
vals = {}
i = 0
for entry in name:
if entry not in vals:
vals[entry] = i + 1
i += 1
print vals

结果:

{'Henry': 5, 'Jack': 1, 'Sam': 2, 'Terry': 3}

元素可以通过“索引”(读取:键)访问,就像您对列表所做的一样,除了“索引”是 key 中的任何内容。是;在这种情况下,键是名称。

>>> vals['Henry']
5

编辑:如果顺序很重要,您可以将项目输入 dict使用 number 作为键:这样,您将根据他们的号码知道哪个所有者:

name = ['Jack','Sam','Terry','Sam','Henry']
vals = {}
i = 0
for entry in name:
#Check if entry is a repeat
if entry not in name[0:i]:
vals[i + 1] = entry
i += 1
print (vals)
print (vals[5])

此代码使用它们出现 的顺序作为键。为了确保我们不会覆盖或创建重复项,它会检查当前名称是否曾出现在列表中(从 0 到 i 的任何位置,即 name 列表中的当前索引)。

这样,还是按照你想要的“排序顺序”。您无需按所有者的姓名访问项目,只需按其编号进行索引即可。这将为您提供您希望从示例中获得的顺序。

结果:

>>> vals
{1: 'Jack', 2: 'Sam', 3: 'Terry', 5: 'Henry'}
>>> vals[5]
'Henry'

关于python - 遍历列表中的条目并创建新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31389144/

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