python嵌套字典查找元素_Python,嵌套字典元素链接

@Mahantesh,当我从您的代码中阅读和理解时,我试图用我的方式实现您的问题。我取了和你一样的名字。在I've also used json module for pretty printing the dictionary.

请检查下面的代码,如果您需要任何更改,请告诉我。在Don't forget to check the output.import json

def get_averages():

student_marks = {};

successful_trials = 0; # IT IS NOT REQUIRED, JUST TO MAKE PROGRAM USER FRIENDLY

while True:

try:

# CREATE A LIST

# ['Rishikesh', '90', '95', '90', '80', '85', '70']

line = input('\n('+ str(successful_trials + 1) + ') ENTER NAME SEPARATED BY 1 OR MORE SCORES SPACE SEPARATED (TYPE exit TO STOP) >>> ').split();

if len(line) > 0:

# NAME OF STUDENT => 'Rishikesh'

name = line[0];

if name.lower() == 'exit': # IF USER ENTERS ANYTHING STARTING WITH exit (stop iteration)

break

# SCORES OF A STUDENT (INTEGERS) => [90, 95, 90, 80, 85, 70]

scores = [int(number) if (int(number) >= 0 and int(number) <= 100) else -1 for number in line[1:]]

if not scores:

print("\nERROR: INPUT SHOULD HAVE AT LEAST 1 OR MORE SCORES (SPACE SEPARATED)")

continue

else:

print("\nERROR: INPUT SHOULD HAVE NAME FOLLOWED BY AT LEAST 1 OR MORE SCORES (SPACE SEPARATED)")

continue

if -1 not in scores: # SCORES ARE IN RANGE MEANS IT IS NOT LIKE [90, -1, 90, -1, 85, 70]

student_marks[name] = {

"scores": scores,

"average": sum(scores) / len(scores) # AVERAGE

}

else:

print("\nERROR: ENTERED SCORES ARE NOT IN RANGE")

continue

successful_trials += 1; # IF EVERYTHING PASSED

except Exception as error:

print('\nERROR OCCURED: ', error)

print("\nPLEASE ENTER CORRECT VALUE")

continue

return student_marks; # DICTIONARY OF DICTIONARIES

if __name__ == "__main__":

# CALL TO get_averages()

student_marks = get_averages();

# PRETTY PRINTING DICTIONARY USING json MODULE

print(json.dumps(student_marks, indent=4));

»输出1

^{pr2}$

»输出2(py3.6) H:\RishikeshAgrawani\Projects\Sof\EntrySof>python EntrySof.py

(1) ENTER NAME SEPARATED BY 1 OR MORE SCORES SPACE SEPARATED (TYPE exit TO STOP) >>> hygull 50 60 70

(2) ENTER NAME SEPARATED BY 1 OR MORE SCORES SPACE SEPARATED (TYPE exit TO STOP) >>> gurudev 78 22 50 55 45

(3) ENTER NAME SEPARATED BY 1 OR MORE SCORES SPACE SEPARATED (TYPE exit TO STOP) >>> user1 60 -5 9

ERROR: ENTERED SCORES ARE NOT IN RANGE

(3) ENTER NAME SEPARATED BY 1 OR MORE SCORES SPACE SEPARATED (TYPE exit TO STOP) >>> user2 100 40 kite

ERROR OCCURED: invalid literal for int() with base 10: 'kite'

PLEASE ENTER CORRECT VALUE

(3) ENTER NAME SEPARATED BY 1 OR MORE SCORES SPACE SEPARATED (TYPE exit TO STOP) >>> user3 90 90 100 50

(4) ENTER NAME SEPARATED BY 1 OR MORE SCORES SPACE SEPARATED (TYPE exit TO STOP) >>> exit

{

"hygull": {

"scores": [

50,

60,

70

],

"average": 60.0

},

"gurudev": {

"scores": [

78,

22,

50,

55,

45

],

"average": 50.0

},

"user3": {

"scores": [

90,

90,

100,

50

],

"average": 82.5

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值