我有一个名为sentence
的字符串:'the sly fox jumped over the brown dog'
我需要创建一个名为Positions
的字典。
Positions
的键应为sentence
中的字符。
这些值应该是这些字符的索引。
例如,所需的输出将是:
{'t':0, 'h':1, 'e':2, ' ':3 ...}
等
我当然可以手动将其写出,但实际上我被要求将字符串转换为键,而无需手动将其写出。
到目前为止,我刚刚创建了一个空字典,并试图在事件之后为它分配键和值:
Positions = {}
我是从错误的脚开始吗?
答案 0 :(得分:6)
您可以执行以下操作:
result = {}
s = 'the sly fox jumped over the brown dog'
for i, c in enumerate(s):
result.setdefault(c, []).append(i)
print(result)
输出
{'m': [14], 'e': [2, 16, 21, 26], 'v': [20], 's': [4], 'n': [32], 'h': [1, 25], 'w': [31], 'l': [5], 'o': [9, 19, 30, 35], 'x': [10], 'p': [15], 'd': [17, 34], 'g': [36], 't': [0, 24], 'u': [13], 'f': [8], 'y': [6], 'b': [28], 'j': [12], ' ': [3, 7, 11, 18, 23, 27, 33], 'r': [22, 29]}
请注意,上述解决方案考虑了重复字符的情况,并创建了索引列表。
答案 1 :(得分:1)
由于字符可能会在字符串中重复出现,因此我将它们存储为列表
str = "the sly fox jumped over the brown dog"
char_items = list(str)
dictionary = {}
for index,character in enumerate(char_items):
if character not in dictionary.keys():
dictionary[character] = [] # because same character might be repeated in different positions
dictionary[character].append(index)
for character,positions in dictionary.items():
print(character, positions)
答案 2 :(得分:0)
谢谢大家的建议!正如上面Asif所建议的,对我而言,前进的方法是将字符串转换为列表。
我还发现Nick Dunn的“用Python创建字典的三种方法”真的很有用: https://developmentality.wordpress.com/2012/03/30/three-ways-of-creating-dictionaries-in-python/
示例问题:“创建一个词典,其键由字母('abcdefghijklmnopqrstuvwxyz')中的字符组成,值由0到26之间的数字组成。 将此存储为位置。”
1)将字母从字符串转换为列表,字符
chars = []
for AtoZ in alphabet:
chars += AtoZ
print(chars)
[' ',
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
'p',
'q',
'r',
's',
't',
'u',
'v',
'w',
'x',
'y',
'z']
2)创建另一个名为数字
的列表numbers = list(range(0,27))
numbers
Out[16]:
[0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26]
3)从两个列表中创建名为 positions {} 的字典:
positions = {}
positions = dict(zip(chars,numbers))
print(positions)
{'v': 22, 'g': 7, 'w': 23, 'h': 8, 'a': 1, 'm': 13, 'c': 3, 'o': 15, 'd': 4, 's': 19, 'r': 18, 'u': 21, 'j': 10, 't': 20, 'f': 6, 'k': 11, 'y': 25, 'z': 26, 'l': 12, ' ': 0, 'b': 2, 'e': 5, 'q': 17, 'n': 14, 'i': 9, 'p': 16, 'x': 24}
我希望这篇文章可以帮助其他人使用Python将字符串和/或列表转换成字典。