关于Python字典的相关问题?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Python字典的相关问题?相关的知识,希望对你有一定的参考价值。

具体就是,如何才能实现,当我输入字典不存在人的信息后,等我再次打开这个程序,这个程序能够记录上我之前输入人的信息,比方说,现在字典是 birthdays='李爽':'1月17日','张爽':'4月1日',等我输入完,关闭程序,然后再次打开程序的时候,字典已经变成birthdays='李爽':'1月17日','张爽':'4月1日','韩山':‘3月3日’

楼主是想实现以下功能:

①输入姓名查询生日;

②如不存在输入的姓名,则a添加这个姓名;b再给这个键添加值;

③字典内容的保存

楼主你可使用birthday.get(key, default)来实现==其中default表示不存在的键返回默认值(如birthday.get('韩山', “NULL")),也就是表示这个键值对在字典中不存在。这样操作不会有错误提示,只会返回你的default值。

因此,当检测到"NULL"时,将这个键值对添加(birthday['韩山'] = '3月3日' 到字典中就是。

至于内容的保存,你需借助文本文件的读写来完成。

这只是一个大概的思路,还需根据你的具体需求进行适当的修改。

如有帮助,请采纳!

参考技术A 字典是一种变量,它保存在内存中,程序关闭,这部分内存就释放了。
你要保存到磁盘中,通常可以把它保存到文件或者数据库中,然后再次打开程序的时候,读出它,写回字典
参考技术B 这是无法实现的,但如果你让程序一直运行是可以实现的。 参考技术C 可以写到txt

关于Python 字典里的value

问题是有'a':[1,2,3,4],'b':[11,22,33], 即a中有4个值, b中有3个值
要弄成'a': [1,1,1,2,2,2,3,3,3,4,4,4], 'b':[11,11,11,11,22,22,22,22,33,33,33,33]
a和b中都要有3*4 = 12个值, 就是每个value的长度要一样

初学python,以此题练习,不求财富。

# -*- coding: utf-8 -*-
dic = 'a':[1,2,3,4], 'b':[11,22,33]

def gcd(m, n):
    ''' 求两个数的最大公约数 (greatest common divisor) '''
    return m if n == 0 else gcd(n, m % n)
    #三元表达式格式:true_part if condition else false_part

def lcm(m, n):
    ''' 求两个数的最小公倍数 (least common multiple) '''
    return (m * n) / gcd(m, n)

lsLen = [len(dic['a']), len(dic['b'])]
lcmRet = lcm(lsLen[0], lsLen[1])
dicMultiple = 'a': lcmRet / lsLen[0], 'b': lcmRet / lsLen[1]

dicRet = 'a':[], 'b':[]
for key in dic:
    for elem in dic[key]:
        for n in range(dicMultiple[key]):
            dicRet[key].append(elem)
print dicRet

参考技术A #先求最小公倍数,再整形
dic = 'sports' :'s.basketball':['a', 'b', 'c', 'd'], 's.football':['aa', 'bb', 'cc', 'dd'] , 
       'music':'m.juzz':['e', 'f', 'g'], 'm.pop':['ee', 'ff', 'gg']
def gcd(a, b):
    if b == 0:
        return a
    else:
        return gcd(b, a % b)
def lcm(a, b):
    return a * b / gcd(a, b)
myLcm = 1#最小公倍数
for k in dic:
    for k2 in dic[k]:
        myLcm = lcm(len(dic[k][k2]), myLcm)
newDiv = 
for k in dic:
    newDiv[k] = 
    for k2 in dic[k]:
        newDiv[k][k2] = []
        l = len(dic[k][k2])
        for v in dic[k][k2]:
            for i in range(myLcm / l):
                newDiv[k][k2].append(v)
print newDiv

追问

兄弟 你这个输出是字典里套字典, 我不用两个字典, 只要
'a': [1,1,1,2,2,2,3,3,3,4,4,4], 'b':[11,11,11,11,22,22,22,22,33,33,33,33]就行了, 能不能再麻烦帮我看看

本回答被提问者采纳

以上是关于关于Python字典的相关问题?的主要内容,如果未能解决你的问题,请参考以下文章

Python 字典及字典的相关操作

Python ---字典相关操作

python 字典相关操作

python关于字典的常用方法

Python字典及相关操作(内含例题)

python if语句关于字典值