如何使用字典而不是列表来实现此程序?

时间:2016-05-17 00:32:26

标签: python list python-3.x dictionary append

我有我编写的这个程序,我使用了一个列表,因为你可以轻松附加到它。使用字典,您无法附加到它。所以我想知道是否有办法用字典而不是列表编写这个程序,如果有的话,怎么样?

我希望输出保持不变。只是当您将store = []更改为字典store = {}时,如何更改程序的其余部分,我只更改从列表到字典的特定变量?

def SSN():

    store = []

    for i in range(0, 100):
        store.append([])
    i = 0
    name = 'key'
    while(name != ''):
        name = input('Enter Name: ')
        if(name == ''):
            if(i<1):
                break
            j=0
            while(j < i):
                print(store[j][0] + ' has SSN ' + store[j][1])
                j = j+1
            break
        j=0
        val = 0
        while(j < i):
            if(name == store[j][0]):
                val = 1
                break
            j = j + 1
        if(val == 1):
            update = input(name + ' has SSN ' + store[j][1] + '. Update? ')
            if(update == 'y'):
                store[j][1] = input('Enter SSN: ')
        else:
            ssn = input('Enter SSN: ')
            store[i].append(name)
            store[i].append(ssn)
            i = i+1
SSN()

这完全符合我的要求,但它只是我想要的字典。 谢谢!

对于输出,我有这个:

Enter Name:约翰 Enter SSN: 1234 Enter Name:麦克 Enter SSN: 5678 Enter Name: wazowski Enter SSN: 0000 Enter Name:麦克 mike has SSN 5678. Update? ÿ Enter SSN: {6644 {1}} {约翰{1}} N Enter Name:

其中间隔开的单词表示程序提示时用户输入的内容。

3 个答案:

答案 0 :(得分:4)

store设为dict是一个好主意,它会摆脱您用来从中查找项目的所有循环。改变后的程序看起来像这样:

def SSN():
    store = {}
    while True:
        name = input('Enter Name: ')
        if not name:
            for k, v in store.items():
                print(k + ' has SSN ' + v)
            break

        if name in store:
            if input(name + ' has SSN ' + store[name] + '. Update? ') != 'y':
                continue

        store[name] = input('Enter SSN: ')

在上面的store.items()中返回来自dict的键值对,其中键是name,值是SSN。 name in store返回布尔值,告知名称是否在store中,store[name] = input('Enter SSN: ')分配新值替换旧值(如果存在)。

答案 1 :(得分:1)

如果我正在看这个...... 现在看起来你正在创建一个名为“store”的列表,如果不是用你的用户友好的布局打印它,你只打印列表,它看起来像

['john',1234,'mike',6644,'wazowski',0000]

但相反,你宁愿拥有一个看起来更像

的字典

{'john':1234,'mike':6644,'wazowski':0000}

我同意字典在这里更有意义。尝试像

这样的东西
store = {}
name = 'key'
while name != '':
    name = raw_input("Enter Name: ")
    if name == '':
        break
    ssn = raw_input("Enter SSN: ")
    store[name] = ssn

在这种情况下你唯一丢失的是能够看到第一个,第二个等输入了哪个名字。但这似乎并不像能够轻易识别哪个号码与哪个名字一样重要。

答案 2 :(得分:0)

所以你想在字典中实现列表然后尝试

{
http_status: 200,
stats: {
responses: {
showing: 1000,
total: 1275,
completed: 369
}
},



$.getJSON( "<url here>", function(data) {
  alert(data);
});

也许这就是你要找的东西?