我正在学习RxPY,所以我需要编写一些代码,这些代码可以按照第一个字符分割每个单词。 结果必须如下所示:
from rx import Observable , Observer
list =['A', 'The', 'the', 'LAZY', 'Low']
o = Observable . from_ ( list )\
. filter (lambda i: i[0] == 'A' or 'Z' )\
words = o.map(lambda s: s.lower().split())
word_each = words.flat_map(lambda s: s)
ss = word_each.to_dict(lambda x: x[:1], lambda x : x)\
.subscribe(lambda val: print(val))
我尝试了什么。
[CLOSED]
那么,我该如何解决这个问题呢?我正在考虑用它的第一个字符对每个单词进行分组,但我不知道如何。
Error running MyActivityName: The activity must be exported or contain an intent-filter
答案 0 :(得分:1)
我对RxPy一无所知,但你可以使用dict和list comps在vanilla python的一行中做到这一点
d = {el[0].lower(): [e.lower() for e in lst if e[0].lower() == el[0].lower()] for el in lst}
答案 1 :(得分:1)
使用rx,如果你真的想以困难的方式做到这一点。
dict(result)
使用Chiheb Nexus'中所示的list
如果您需要以字典的形式提供答案,请回答。
我将my_list
的名称更改为>>> my_list =['A', 'The', 'the', 'LAZY', 'Low']
>>> from itertools import groupby
>>> {key: list(val) for (key, val) in groupby(sorted(my_list), key=lambda x: x[0].lower())}
{'a': ['A'], 't': ['The', 'the'], 'l': ['LAZY', 'Low']}
。
-DCMAKE_BUILD_TYPE=
答案 2 :(得分:0)
您可以使用defaultdict
模块完成任务。这是一个例子:
from collections import defaultdict
my_list = ['A', 'The', 'the', 'LAZY', 'Low']
def split_words(a):
b = defaultdict(list)
for k in a:
b[k[0].lower()].append(k.lower())
return b
>>> split_words(my_list)
defaultdict(list, {'a': ['a'], 'l': ['lazy', 'low'], 't': ['the', 'the']})
>>> dict(split_words(my_list))
{'a': ['a'], 'l': ['lazy', 'low'], 't': ['the', 'the']}
答案 3 :(得分:0)
使用RxPy v6更新2019年5月
RxPy 在执行这些类型的转换时确实很出色(尽管您可以同样地在纯Python中应用实用的解决方案)。
这是一个简单的解决方案:
from rx import Observable
list = ['A', 'The', 'the', 'LAZY', 'Low']
Observable.from_(list) \
.map(lambda s: s.lower()) \
.group_by(lambda s: s[0]) \
.flat_map(lambda grp: grp.to_list()) \
.to_dict(lambda grp: grp[0][0], lambda grp: grp) \
.subscribe(print)
根据要求输出:
# {'a': ['a'], 't': ['the', 'the'], 'l': ['lazy', 'low']}
“算法”为:
在将每个分组转换为列表时,请使用平面图进行嵌套。此时,临时结果如下:
['a']
['the', 'the']
['lazy', 'low']
现在,使用to_dict
运算符将其转换为单个词典,其键是每个分组(列表)中第一项的首字母。