相关疑难解决方法(0)

python命名为字典的元组

我在python中有一个名为tuple的类

class Town(collections.namedtuple('Town', [
    'name', 
    'population',
    'coordinates',
    'population', 
    'capital', 
    'state_bird'])):
    # ...
Run Code Online (Sandbox Code Playgroud)

我想做的是将其变成字典.我承认python不是我强大的语言之一.关键是我不希望它与我所拥有的字段的名称或数字紧密相关.

有没有办法写它,以便我可以添加更多的字段,或传递一个完全不同的命名元组并获取字典.

编辑:我不能改变原来的类定义,因为它在别人的代码中.所以我需要一个城镇的实例并将其转换为字典.

python dictionary tuples namedtuple

126
推荐指数
3
解决办法
6万
查看次数

为什么命名元组比字典使用更少的内存?

我问这个是因为我觉得这很令人惊讶——我认为 anamedtuple会有更多的开销。

(背景是我在内存中缓存了一个大的 Django 查询,发现 Django 对象的大小是 的 100 倍.values()。然后我想知道namedtuple这些对象的开销版本是什么,允许我仍然使用.对项目的访问作为属性。较小的是不是我所期望的。)

#!/usr/bin/env python                                                           

from pympler.asizeof import asizeof                                             
from collections import namedtuple                                              

import random                                                                   
import string                                                                   

QTY = 100000                                                                    


class Foz(object):                                                              
    pass                                                                        

dicts = [{'foo': random.randint(0, 10000),                                      
          'bar': ''.join([random.choice(string.ascii_letters + string.digits) for n in xrange(32)]),
          'baz': random.randrange(10000),                                       
          'faz': random.choice([True, False]),                                  
          'foz': Foz()} for _ in range(QTY)]                                    

print "%d dicts: %d" % (len(dicts), asizeof(dicts))                             

# /sf/ask/3074486831/

MyTuple = namedtuple('MyTuple', sorted(dicts[0]))                               

tuples = [MyTuple(**d) for d …
Run Code Online (Sandbox Code Playgroud)

python python-2.7

3
推荐指数
1
解决办法
647
查看次数

标签 统计

python ×2

dictionary ×1

namedtuple ×1

python-2.7 ×1

tuples ×1