python 基础知识 dict list tuple

python

dict   D={}

list    L=[]

tuple P=()

http://ipseek.blog.51cto.com/1041109/789896

字典嵌套

字典是可以嵌套的,也就是类似php里面的二维数组,也就是活,字典里面能嵌套一个字典。不但可以嵌套字典,还可以嵌套列表或者元组。对于嵌套在字典里面的列表,也可以使用列表对象的方法对该列表进行操作。

元组和列表差不多,但是有两个很不一样的地方,第一个是列表使用[],而元组使用(),然后元组跟字符串类似,是不可改变的。元组是python数据结构里面唯一不能修改的,而列表和字典都是可以修改的。


关于__name == __main 

简单讲,py文件单独运行时,默认__name__变量传递为__main__因此走此分支。

而若文件作为module被别人import时,__name__为文件名,不走此分支。


关于setdefault 


http://longmans1985.blog.163.com/blog/static/7060547520094623556561/
            http://bbs.chinaunix.net/thread-2293439-1-1.html

目标功能:
class Class:
    def __init__(self):
        self.data = {}
    def add_value(self,key,value):
        if self.data.has_key(key):
           self.data[key].append(value)
        else:
           self.data[key] = [value]

or this:

class Class:
    def __init__(self):
        self.data = {}
    def add_value(self,key,value):
        try:
           self.data[key].append(value)
        except KeyError:
           self.data[key] = [value]
替代功能:

class Class:
    def __init__(self):
        self.data = {}
    def add_value(self,key,value):
        self.data.get(key,[]).append(value)            not work!!

class Class:
    def __init__(self):
        self.data = {}
    def add_value(self,key,value):
        self.data.setdefault(key,[]).append(value)      work well

举例:


请问如何将report = {1:{'1-2':[1,2,3],'1-3':[2,3,4]},2:{'2-1':[3,4,5],'2-3':[4,5,6]},3:{'3-1':[3,4,6],'3-2':[5,8,4]}} 这样的数据,转换成report = {1:{'1-2':1,'1-3':2},2:{'2-1':3,'2-3':4},3:{'3-1':3,'3-2':5}}这样的数据,谢谢。

report = {1:{'1-2':[1, 2, 3], '1-3':[2, 3, 4]}, 2:{'2-1':[3, 4, 5], '2-3':[4, 5, 6]}, 3:{'3-1':[3, 4, 6], '3-2':[5, 8, 4]}}
#print report

for key, subdict in report.items() :
	#print key
	for subkey, lst in subdict.items() :
		#print '\t', subkey, lst
		subdict[subkey] = lst[0]

print report

举例2:转自:http://blog.csdn.net/bluewhale1/article/details/8536561

最近拾回Django学习,实例练习中遇到了对多维字典类型数据的遍历操作问题,Google查询没有相关资料…毕竟是新手,到自己动手时发现并非想象中简单,颇有两次曲折才最终实现效果,将过程记录下来希望对大家有用。

Python多维/嵌套字典数据无限遍历

实例数据(多重嵌套):

1 person = {"male":{"name":"Shawn"}, "female":{"name":"Betty","age":23},"children":{"name":{"first_name":"李""last_name":{"old":"明明","now":"铭"}},"age":4}}

目的:

遍历person中所有嵌套字典类型数据,并以 key : value 的方式显示思路:首先分析数据是否符合字典特征打印该数据的key及对应value循环检查该数据的每一个子value是否符合字典特征,如果符合则迭代执行,不符合则返回循环继续执行至结束

具体代码:

01 def is_dict(dict_a): #此方法弃用,python已提供数据类型检测方法isinstance()
02     try:
03         dict_a.keys()
04     except Exception , data:
05         return False
06     return True
07  
08 def list_all_dict(dict_a):
09     if isinstance(dict_a,dict) : #使用isinstance检测数据类型
10         for in range(len(dict_a)):
11             temp_key = dict_a.keys()[x]
12             temp_value = dict_a[temp_key]
13             print"%s : %s" %(temp_key,temp_value)
14             list_all_dict(temp_value) #自我调用实现无限遍历

结果:

执行 list_all_dict(person),系统回应 :

01 male : {'name''Shawn'}
02 name : Shawn
03 children : {'age'4'name': {'first_name''\xc0\xee''last_name': {'now':'\xc3\xfa''old''\xc3\xf7\xc3\xf7'}}}
04 age : 4
05 name : {'first_name''\xc0\xee''last_name': {'now''\xc3\xfa''old':'\xc3\xf7\xc3\xf7'}}
06 first_name : 李
07 last_name : {'now''\xc3\xfa''old''\xc3\xf7\xc3\xf7'}
08 now : 铭
09 old : 明明
10 female : {'age'23'name''Betty'}
11 age : 23
12 name : Betty

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值