我有一个字符串,单词之间用空格隔开(所有单词都是唯一的,没有重复)。我将此字符串转换为列表:
s = "#one cat #two dogs #three birds"
out = s.split()
并计算创建多少个值:
print len(out) # Says 192
然后,我尝试从列表中删除所有内容:
for x in out:
out.remove(x)
然后再次计数:
print len(out) # Says 96
有人可以解释为什么它说96而不是0吗?
更多信息
每行以“#”开头,实际上是一对空格分隔的单词:该对中的第一行是键,第二行是值。
因此,我正在做的是:
for x in out:
if '#' in x:
ind = out.index(x) # Get current index
nextValue = out[ind+1] # Get next value
myDictionary[x] = nextValue
out.remove(nextValue)
out.remove(x)
问题是我无法将所有键,值对移入字典,因为我仅迭代96个项目。
我认为您实际上想要这样的东西:
s = '#one cat #two dogs #three birds'
out = s.split()
entries = dict([(x, y) for x, y in zip(out[::2], out[1::2])])
这段代码在做什么?让我们分解一下。首先,我们s
按空格将out
其拆分为您所拥有的。
接下来,我们遍历对中的对out
,将它们称为“ x, y
”。这些对成为list
元组/对。
dict()
接受大小为2的元组的列表,并将其视为key, val
。
这是我尝试时得到的:
$ cat tryme.py
s = '#one cat #two dogs #three birds'
out = s.split()
entries = dict([(x, y) for x, y in zip(out[::2], out[1::2])])
from pprint import pprint
pprint(entries)
$ python tryme.py
{'#one': 'cat', '#three': 'birds', '#two': 'dogs'}
我想在没有空格的标题中查找并分隔单词。 之前: 这是一个示例标题黑色-世界2019T.E.S.T.(测试)“测试”“测试”[测试] 之后: 这是一个例题标题HELLO-WORLD 2019 T.E.S.T .(测试)[测试]“测试”'测试' 我正在寻找一个可以执行以下操作的正则表达式规则。 我想我会识别每个以大写字母开头的单词。 但也要保留所有大写单词,以免将它们分隔为。 附加规则: 如果字母与数
给我一个字符串“23 45”,我需要得到两个值为23的变量(int a)和值为45的变量(int b)
问题内容: 假设我有一个字符串“ 1 23 40 187 298”。该字符串仅包含整数和空格。如何将这个字符串转换为整数数组[1,23,40,187,298]。这就是我尝试的方式 但它不起作用,请提供一些帮助。谢谢! 问题答案: 你忘记了 解析为空字符串以创建新数字位后重置为空字符串 在字符串的末尾将没有空格,所以 } 将不会被调用,这意味着您需要调用 循环后再次 但更简单的方法是只用创建令牌的临
问题内容: 如何将String转换为Map: 预期产量: 问题答案: 无需重新发明轮子。Google Guava库提供了该类。 这是如何与一些测试代码一起使用的:
问题内容: 如何在Java中转换为逗号分隔的字符串? 结果我想要: 这是非常相似的参考问题,但是这些解决方案都无法提供结果,这正是我所需要的。 到目前为止我尝试过的 问题答案: 这是一个流版本,在功能上等同于khelwood,但使用了不同的方法。 他们都创建了一个,将每个映射到一个,并用逗号将它们连接在一起。 它们在性能上也应该完全相同,尽管从 技术上讲 我是直接打电话给他,而他是在打电话给代表。