在给定条件下是否有 way/hint 来提取两者之间的字典?
Is there a way/hint to extract dictionary in between in a given condition?
给定一个字典:
{0: 'Hello', 1: 'Bob', 2: '!', 3: 'Hello', 4: 'Bob', 5: '?', 6: 'Hello', 7: 'Bob', 8: '!', 9: 'Hello', 10: 'Jane', 11: '!', 12: 'Hello', 13: 'Rob', 14: '?'}
我想在 'Hello' 和 '!' 对之间提取这些文本,包括在内并忽略对 'Hello' 和 '?'但我目前被困住了。我只需要朝着正确的方向轻推即可。
到目前为止,我已经尝试将它们切片并得到以下结果:
{0: 'Hello', 2: '!', 3: 'Hello', 5: '?', 6: 'Hello', 8: '!', 9: 'Hello', 11: '!', 12: 'Hello', 14: '?'}
但现在我不知道如何配对这些值。例如对 0,2 然后对 7,8 然后最后对 9,11.
这是我做的方法
def split(array):
print(array)
names = {'Hello','?','!'}
lst = {key:value for key, value in array.items() if value in names}
print(lst)
如果字典基于 3 个值序列,如 'Hello',则名称为“!”要么 '?'那么解决方案就很简单了。但首先你不能假定字典有顺序。所以我首先将它转换成对的列表并对它们进行排序:
>>> lst = sorted(d.items())
>>> lst
[(0, 'Hello'), (1, 'Bob'), (2, '!'), (3, 'Hello'), (4, 'Bob'), (5, '?'), (6, 'Hello'), (7, 'Bob'), (8, '!'), (9, 'Hello'), (10, 'Jane'), (11, '!'), (12, 'Hello'), (13, 'Rob'), (14, '?')]
接下来,我只需要名字。隐含索引:
>>> names = [name for num, name in lst]
>>> names
['Hello', 'Bob', '!', 'Hello', 'Bob', '?', 'Hello', 'Bob', '!', 'Hello', 'Jane', '!', 'Hello', 'Rob', '?']
最后,提取你需要的索引:
>>> indexes = [i for i in range(0, len(names), 3) if names[i] == 'Hello' and names[i+2] == '!']
>>> indexes
[0, 6, 9]
给定一个字典:
{0: 'Hello', 1: 'Bob', 2: '!', 3: 'Hello', 4: 'Bob', 5: '?', 6: 'Hello', 7: 'Bob', 8: '!', 9: 'Hello', 10: 'Jane', 11: '!', 12: 'Hello', 13: 'Rob', 14: '?'}
我想在 'Hello' 和 '!' 对之间提取这些文本,包括在内并忽略对 'Hello' 和 '?'但我目前被困住了。我只需要朝着正确的方向轻推即可。
到目前为止,我已经尝试将它们切片并得到以下结果:
{0: 'Hello', 2: '!', 3: 'Hello', 5: '?', 6: 'Hello', 8: '!', 9: 'Hello', 11: '!', 12: 'Hello', 14: '?'}
但现在我不知道如何配对这些值。例如对 0,2 然后对 7,8 然后最后对 9,11.
这是我做的方法
def split(array):
print(array)
names = {'Hello','?','!'}
lst = {key:value for key, value in array.items() if value in names}
print(lst)
如果字典基于 3 个值序列,如 'Hello',则名称为“!”要么 '?'那么解决方案就很简单了。但首先你不能假定字典有顺序。所以我首先将它转换成对的列表并对它们进行排序:
>>> lst = sorted(d.items())
>>> lst
[(0, 'Hello'), (1, 'Bob'), (2, '!'), (3, 'Hello'), (4, 'Bob'), (5, '?'), (6, 'Hello'), (7, 'Bob'), (8, '!'), (9, 'Hello'), (10, 'Jane'), (11, '!'), (12, 'Hello'), (13, 'Rob'), (14, '?')]
接下来,我只需要名字。隐含索引:
>>> names = [name for num, name in lst]
>>> names
['Hello', 'Bob', '!', 'Hello', 'Bob', '?', 'Hello', 'Bob', '!', 'Hello', 'Jane', '!', 'Hello', 'Rob', '?']
最后,提取你需要的索引:
>>> indexes = [i for i in range(0, len(names), 3) if names[i] == 'Hello' and names[i+2] == '!']
>>> indexes
[0, 6, 9]