将两个字符串的组合指定给一个字符串,并在lis中将它们分开

2024-06-12 01:19:15 发布

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

这是我想做的一个简单的例子。 比如说,我有一个随机列表如下:

aa = 1
b = 2
c = 3
ao = 4
uw = 5
d = 6 
ih = 7

我给程序的输入是:

b d aa aw ay c

在输入中,有些字符串没有值,并且不在列表中,例如“aw”和“ay”。所以,我必须把它们转换成列表中的字符串。但问题是,“aw”和“ay”是两个字符串的组合。例如,我必须将'aw'更改为ao+uw,将'ay'更改为ao+ih,并形成一个列表。所以新的输入列表应该是

b
d
aa
ao
uw
ao
ih
c

最终的输出应该是它们对应的值

2 6 1 4 5 4 7 3  

我不能用代码写这个。有人能帮忙吗?非常感谢。你知道吗


Tags: 字符串代码程序列表例子uwaaih
3条回答

第一步。分配音素值。你已经做了一些。你得把37个都做完。不应该太难。你知道吗

aa = 1
b = 2
c = 3
ao = 4
uw = 5
d = 6 
ih = 7

第二步。指定双音变量,这些变量是列表。这也不难。你知道吗

aw= [ ao, uw ]
ay= [ ao, ih ]

第三步。创建嵌套列表。双峰将成为子列表。你知道吗

nested = [ b, d, aa, aw, ay, c ]

第四步。展平嵌套列表。你知道吗

def flatten( some_list ):
    for x in some_list:
        if isinstance(x,collections.Sequence):
            for v in flatten(x):
                yield v
        else:
            yield x

result= list( flatten( nested ) )

我知道,如果字符串在初始列表中,那么输出是相关联的数字;如果不在初始列表中,则需要将该字符串分解为两个串联的字符串。你知道吗

首先,您必须考虑是否存在唯一分解(例如,您可能有ab+bc=ac=ad+dc)。你知道吗

然后为了解决您的问题,如果您只寻找一级分解(不超过2个串联字符串),您可以在一个新列表中预先计算串联。你知道吗

当你有一个输入,你首先看第一个列表。如果不在其中,请查看新的串联字符串列表。你知道吗

那。。。你知道吗

str_converter = {'aa': 1, 'b':2, 'c':3, 'ao': 4, 'uw':5, 'd':6, 'ih':7}
pre_converter = {'aw': ['ao', 'uw'], 'ay': ['ao', 'ih']}

input = ['b', 'd', 'aa', 'aw', 'ay', 'c']

work_list = []

for in_string in input:
    converted_str = pre_converter.get(in_string)
    if converted_str is None:
        work_list.append(in_string)
    else:
        work_list.extend(converted_str)

for work_string in work_list:
    print str_converter.get(work_string)

相关问题 更多 >