GVKun编程网logo

在python字典中赋值(复制与参考)(python中字典的赋值)

14

在本文中,我们将带你了解在python字典中赋值在这篇文章中,我们将为您详细介绍在python字典中赋值的方方面面,并解答复制与参考常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的pytho

在本文中,我们将带你了解在python字典中赋值在这篇文章中,我们将为您详细介绍在python字典中赋值的方方面面,并解答复制与参考常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的python字典中值为列表或字典的构造方式、python字典中怎么删除元素、python字典中添加项、python字典中的5个最大值

本文目录一览:

在python字典中赋值(复制与参考)(python中字典的赋值)

在python字典中赋值(复制与参考)(python中字典的赋值)

我知道在python中,任何东西,无论是数字,字符串,字典还是其他任何东西都是对象。变量名只是指向内存中的对象。现在根据这个问题,

>> a_dict = b_dict = c_dict = {}

这将创建一个空字典,并且所有变量都指向该dict对象。因此,更改任何一个都会反映在其他变量中。

>> a_dict["key"] = "value" #say>> print a_dict>> print b_dict>> print c_dict

会给

{''key'': value}{''key'': value}{''key'': value}

我已经了解了指向对象的变量的概念,因此这似乎很公平。

现在,尽管它很奇怪,但由于它是这样的基本声明,为什么会发生这种情况?

>> a = b = c = 1>> a += 1>> print a, b, c2, 1, 1   # and not 2, 2, 2

问题的第一部分: 为什么这里不应用相同的概念?

实际上,当我尝试为此寻求解决方案时,就出现了这种疑问:

>> a_dict = {}>> some_var = "old_value">> a_dict[''key''] = some_var>> some_var = "new_value">> print a_dict{''key'': ''old_value''}  # and not {''key'': ''new_value''}

这似乎是违反直觉的,因为我一直以为我要告诉字典保存变量,并且更改变量指向的对象显然会反映在字典中。但这在我看来好像是在复制该值,而不是引用该值。
这是我不明白的第二件事。

继续前进,我尝试了其他事情

>> class some_class(object):..    def __init__(self):..        self.var = "old_value">> some_object = some_class()>> a_dict = {}>> a_dict[''key''] = some_object>> some_object.var = "new_value">> print a_dict[''key''].var"new_value"    # even though this was what i wanted and expected, it conflicts with the output in the previous code

现在,在这里,显然正在引用它。这些矛盾使我对python的不可预测的特性深感不安,尽管我仍然喜欢它,原因是我对其他任何语言都不甚了解:p。即使我一直以为分配会导致对象的引用,但是这两种情况是矛盾的。
所以这是我最后的疑问 。我知道这可能是那些python gotcha的 。请教育我。

答案1

小编典典

您在这里尝试2种不同的方法。首先是 可变性不变性 的思想。在Python, ,,有一些相比内建不可变类型的,(以及其他),其是可变的类型。
不变 对象是一旦创建就无法更改的对象。因此,在您的示例中:str``int``tuple``list``dict __

a = b = c = 1

该行后,所有的abc指在内存中相同的整数(你可以打印他们的respecitve检查id的,并指出,它们是相同的)。但是,当您这样做时:

a += 1

a现在,它是指位于不同存储位置的新(不同)整数。请注意,作为约定,+=如果类型是不可变的,则应返回某事物的新实例。如果类型是 可变的
,则应在适当位置更改对象并返回它。我将在此答案中解释一些更具体的细节。


对于第二部分,您试图弄清楚python的标识符如何工作。我认为的方式是……编写语句时:

name = something

右侧被求值为某个对象(整数,字符串等)。该对象然后在左侧1上被命名。当名称在右侧时,将自动“查找”对应的对象,并在计算中替换该名称。请注意,在此框架中,赋值并不关心之前是否有任何名字,它只是用新的值覆盖了旧的值。以前使用该名称构造的对象看不到任何变化-
也不。它们已经被创建-保留对对象本身的引用,而不是对名称的引用。所以:

a = "foo"  # `a` is the name of the string "foo" b = {"bar": a}  # evaluate the new dictionary and name it `b`.  `a` is looked up and returns "foo" in this calculationa = "bar"  # give the object "bar" the name `a` irrespecitve of what previously had that name

1为了简单起见,我在这里忽略了一些细节-例如,当您分配给list元素时会发生什么: lst[idx] = some_value *some_other_value

python字典中值为列表或字典的构造方式

python字典中值为列表或字典的构造方式

1、值为列表的构造方法

dic = {}

dic.setdefault(key,[]).append(value)

>>dic.setdefault(''a'',[]).append(1)
>>dic.setdefault(''a'',[]).append(2)
>>dic
>>{''a'': [1, 2]}

 

2、值为字典的构造方法

dic = {}

dic.setdefault(key,{})[value] =1

>>dic.setdefault(''b'',{})[''f'']=1
>>dic.setdefault(''b'',{})[''h'']=1
>>dic.setdefault(''b'',{})[''g'']=1
>>dic
>>{''b'': {''h'': 1, ''g'': 1, ''f'': 1}}

python字典中怎么删除元素

python字典中怎么删除元素

1、clear()方法是用来清除字典中的所有数据,因为是原地操作,所以返回None(也可以理解为没有返回值)

>>> x['name'] = 'lili'
>>> x['age'] = 20
>>> x
{'age': 20, 'name': 'lili'}
>>> returned_value = x.clear()
>>> x
{ }
>>> print returned_value
None

字典的clear()方法有什么特点:

>>> f = {'key':'value'}
>>> a = f
>>> a
{'key': 'value'}
>>> f.clear()
>>> f
{}
>>> a
{}

当原字典被引用时,想清空原字典中的元素,用clear()方法,a字典中的元素也同时被清除了。

Python字典pop()方法删除字典给定键key及对应的值,返回值为被删除的值。key值必须给出。否则,返回default值。

2、pop()方法语法:

pop(key[,default])

参数:

key: 要删除的键值default: 如果没有 key,返回 default 值

返回值:返回被删除的值。

实例:

>>> x = {'a':1,'b':2}
>>> x.pop('a')
1
>>> x
{'b': 2}

3、字典popitem()方法作用是:随机返回并删除字典中的一对键和值(项)。

>>> x
{'url': 'www.iplaypy.com', 'title': 'python web site'}
>>> x.popitem()
('url', 'www.iplaypy.com')
>>> x
{'title': 'python web site'}

4、del方法能删单一的元素也能清空字典,清空只需一项操作。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['Name']  # 删除键是'Name'的条目
del dict          # 删除字典

更多Python相关技术文章,请访问Python教程栏目进行学习!


python字典中添加项

python字典中添加项

body_daily_close = {
    "mappings": {
        "properties": {
            "trade_date": {
                "type": "keyword"
            }
        }
    }
}
properties = body_daily_close.get("mappings").get("properties")


def daily_close_add_tscodes(tscode):
    properties.setdefault(tscode, {"type": "keyword"})
    print(properties)

 

setdefault 函数可以实现单个项的添加。

添加效果:

image

 

参考:Python 字典(Dictionary)

 

 

 

 

 

 

 

 


python字典中的5个最大值

python字典中的5个最大值

我有一本这样的字典:

A = {'a':10,'b':843,'c': 39,.....}

我想获得该字典的5个最大值,并以此存储一个新的字典。要获得最大值,我做了:

max(A.iteritems(),key=operator.itemgetter(1))[0:]

也许这是一项容易的任务,但是我坚持了很长时间。请帮忙!!!

关于在python字典中赋值复制与参考的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于python字典中值为列表或字典的构造方式、python字典中怎么删除元素、python字典中添加项、python字典中的5个最大值等相关知识的信息别忘了在本站进行查找喔。

本文标签: