Python:计算元组列表的"group-id"

2024-06-27 09:26:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个元组列表:

tups = [("A","a"), ("A","b"), ("A", "c"), ("B", "a"), ("B", "b"), ("C", "a"), ("L", "a")]

我想为每个元组计算一个组id。即(伪码):

("A", "a") --> 11

("A", "b") --> 12

("A", "c") --> 13

("B", "a") --> 21

("B", "b") --> 22

("C", "a") --> 31

("L", "a") --> 121

我试图将元组转换成一个具有多索引的索引,但我不知道如何计算ID。我只在DataFrameGroupBy.grouper类中找到了一种相当模糊的方法。有人吗

编辑

实际元组包含locationname streetname对,即("Summervillage", "Longstreet")。所以相同的地点应该有一个id,街道名称也应该有。组id应该是两者的组合。我不知道如何进一步澄清这一点

编辑2

由于不鼓励在stackoverflow上删除带答案的问题,因此另一个编辑:

("Summervillage", "Longstreet") --> id 1_1
("Summervillage", "Shortstreet") --> id 1_2
("Summervillage", "Nicestreet") --> id 1_3
("Wintertown", "Somestreet") --> id 2_1
("Wintertown", "Midstreet") --> id 2_2
("Bigcity", "Darkalley") --> id 3_1

因此,组id应该为每个城市包含一个编号,为每个城市的每个唯一街道包含一个编号


Tags: 方法id编辑列表街道编号元组grouper
1条回答
网友
1楼 · 发布于 2024-06-27 09:26:06

神秘的问题得到神秘的答案:

import string

tups = [("A", "a"), ("A", "b"), ("A", "c"), ("B", "a"),
        ("B", "b"), ("C", "a"), ("L", "a")]

ids = {tup: (str(string.ascii_uppercase.index(tup[0]) + 1) +
             str(string.ascii_lowercase.index(tup[1]) + 1))
       for tup in tups}

print(ids)
# {('B', 'b'): '22', ('A', 'a'): '11', ('A', 'b'): '12',
#  ('B', 'a'): '21', ('C', 'a'): '31', ('L', 'a'): '121', ('A', 'c'): '13'}

相关问题 更多 >