我有我编写的这个程序,我使用了一个列表,因为你可以轻松附加到它。使用字典,您无法附加到它。所以我想知道是否有办法用字典而不是列表编写这个程序,如果有的话,怎么样?
我希望输出保持不变。只是当您将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:
其中间隔开的单词表示程序提示时用户输入的内容。
答案 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);
});
也许这就是你要找的东西?