将字符串转换为字典

时间:2017-03-31 23:21:21

标签: python python-3.x dictionary

在我身后有一个python课程,我在下一堂课中遇到了这个问题,而且我似乎对如何开始这个问题感到很沮丧。

“编写一个要求用户输入字符串的python程序,然后创建以下字典:值是字符串中的字母,相应的键是字符串中的位置。例如,如果用户输入字符串“ABC123”然后字典将是:D = {'A':0,'B':1,'C':2,'1':3,'2':4,'3':5}

我开始要求用户输入简单的内容,如

s = input('Enter string: ')

然而,我不知道如何进行下一步。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

In [55]: s = input("Enter a string: ")
Enter a string: ABC123

In [56]: d = {char:i for i,char in enumerate(s)}

In [57]: d
Out[57]: {'C': 2, '1': 3, '2': 4, '3': 5, 'B': 1, 'A': 0}

但请注意,如果用户输入中有重复的字符,d将包含每个字符最后一次出现的索引:

In [62]: s = input("Enter a string: ")
Enter a string: ABC123A

In [63]: d = {char:i for i,char in enumerate(s)}

In [64]: d
Out[64]: {'C': 2, '1': 3, '2': 4, '3': 5, 'B': 1, 'A': 6}

答案 1 :(得分:0)

此?

def dict():
    user_input = input("Please enter a string")
    dictionary = {}
    for i, j in enumerate(user_input):
        dictionary[j] = i
    print(dictionary)
dict("ABC123")

答案 2 :(得分:0)

你确定需要这个输出:D = {'A':0,'B':1,'C':2,'1':3,'2':4,'3':5}而不是D = {0:'A',1:'B',2:'C'......}?你可以翻转键:值,但它们将是无序的(例如你会得到类似的东西:D = {'B':1,'3':5,'A':0,'C':2,' 1':3,'2':4}或任何其他随机组合。)

听起来你开始学习python了。欢迎使用精美的编程语言。人们在这里非常有帮助,但你需要表现出一些努力和主动性。这不是一个获得快速解决方案的地方。人们可能会把它们提供给你,但你永远不会学习。

我认为这是与HW相关的问题?除非我弄错了(有人请随意纠正我),你正在寻找的输出很难,如果不是不可能的话(例如按照你想要的特定顺序)。我鼓励你阅读python dictionaries

尝试并运行:

#user = input("Give me a string:")

#Just for demo purpose, lets 
#stick with your orig example 

user = "ABC123"

ls =[]  #create empty list
d = {}  #create empty dictionary 

#Try to figure out and understand 
#what the below code does 
#what is a list, tuple, dict?
#what are key:values?

for l in enumerate(user):
    ls.append(l)

    for k,v in ls:
        d[k] = v

print('first code output')
print(ls)
print(d)

#What/how does enumerate work? 
#the below will generate a 
#ordered dict by key 


for k,v in enumerate(user):
    d[k] = v

print('2nd code output')
print(d)


#you want to flip your key:value 
#output, bases on origibal question 
#notice what happens
#run this a few times 

print('3rd code output')

print(dict(zip(d.values(), d.keys())))


#You can get the order you want, 
#but as a list[(tuple)], not as
#a dict at least in the output
#from your orig question  

print(list(zip(d.values(), d.keys())))

除非我错了,而且有经验的人可以插话,你不能以你想要的字典格式获得“有序”输出。

我在移动设备上,所以任何人都可以随意纠正。