eval:eval() 函数用来执行一个字符串表达式,并返回表达式的原始值。
例如:有个字符串 A="{'value': 'hello'}"
想要输出该字符串的value值,应该怎么办。
如果仅仅是一个字典的话直接取dict['key']就可以轻松取出来,但是在字符串中我们就必须想办法把字符串转化成字典。这时候eval函数就该闪亮登场了。
代码如下:
>>> A="{'value': 'hello'}"
>>> B=eval(A)
>>> B
{'value': 'hello'}
此时在字典情况下想取出值就轻而易举了!
>>> B['value']
功能:将字符串str当成有效的表达式来求值并返回计算结果。
语法: eval(source[, globals[, locals]]) -> value
source:一个Python表达式或函数compile()返回的代码对象
globals:可选。必须是dictionary
locals:可选。任意map对象
实例展示:
可以把list,tuple,dict和string相互转化。
#################################################
字符串转换成列表
>>>a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
>>>type(a)
<type 'str'>
>>> b = eval(a)
>>> print b
[[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]
>>> type(b)
<type 'list'>
#################################################
字符串转换成字典
>>> a = "{1: 'a', 2: 'b'}"
>>> type(a)
<type 'str'>
>>> b = eval(a)
>>> print b
{1: 'a', 2: 'b'}
>>> type(b)
<type 'dict'>
#################################################
字符串转换成元组
>>> a = "([1,2], [3,4], [5,6], [7,8], (9,0))"
>>> type(a)
<type 'str'>
>>> b = eval(a)
>>> print b
([1, 2], [3, 4], [5, 6], [7, 8], (9, 0))
>>> type(b)
<type 'tuple'>
eval()使用原因:
1)在编译语言里要动态地产生代码,基本上是不可能的,但动态语言是可以,意味着软件已经部署到服务器上了,但只要作很少的更改,只好直接修改这部分的代码,就可立即实现变化,不用整个软件重新加载。
2)在machin learning里根据用户使用这个软件频率,以及方式,可动态地修改代码,适应用户的变化。
example:
g={'a':20}
eval("a+1",g)
#test eval() and locals()
x = 1
y = 1
num1 = eval("x+y")
print (num1)
def g():
x = 2
y = 2
num3 = eval("x+y")
print (num3)
num2 = eval("x+y",globals())
#num2 = eval("x+y",globals(),locals())
print (num2)
print locals()["x"]
print locals()["y"]
print globals()["x"]
print globals()["y"]
num1的值是2;num3的值也很好理解,是4;num2的值呢?由于提供了globals()参数,那么首先应当找全局的x和y值,也就是都为1,那么显而易见,num2的值也是2。如果注释掉该句,执行下面一句呢?根据第3)点可知,结果为4
locals()对象的值不能修改,globals()对象的值可以修改
#test globals() and locals()
def f():
z = 1
print (locals())
locals()["z"] = 2
print (locals())
globals()["z"] = 2
print (z)
可以得出,两个print (locals())的结果是一样的,说明没有修改成功。而print (z)的值是2,说明修改成功了
eval有安全性问题,比如用户恶意输入就会获得当前目录文件
eval("__import__('os').system('dir')")
>>> import os
>>> 'os' in globals()
>>> os.system('whoami')
ap\zhail
怎么避免安全问题?
1、自行写检查函数;
2、使用ast.literal_eval
eval:eval() 函数用来执行一个字符串表达式,并返回表达式的原始值。例如:有个字符串 A="{'value': 'hello'}"想要输出该字符串的value值,应该怎么办。如果仅仅是一个字典的话直接取dict['key']就可以轻松取出来,但是在字符串中我们就必须想办法把字符串转化成字典。这时候eval函数就该闪亮登场了。代码如下:>>> A="{'...
python
字典的常规操作上,主要是根据
字典的key键,
获取对应的
value值,或者直接回去整个item键
值对,自行进行其他操作
在实际开发
中,我们面向的基本都是多个
字典的
字典数组,此处示例单个
字典的键、
值、对的
获取,即对
字典数组进行 for i in dict 后的操作
stu = {
'name': '小王',
'age': 14,
'gender': '男',
'chinese': 81,
'math': 92,
'english': 80
题目:把字典的key和value的值取出来,按照顺序存入到list中#-*-coding:utf-8-*-
#创建字段
d={'name':'cheng','age':20,'sex':'female'}
#创建空列表
#将字典中键和值循环取出添加到列表中
for i in d.keys():
a.append(i)
a.append(d[i])
print a
字典的表示:
字典用{}定义,键
值对之间
使用,分隔,键key是索引,
值value是数据,键和
值之间
使用;分隔,键必须是唯一的.
d = {key1 :
value1, key2 :
value2 }
访问
字典中的
值:
增加/修改
字典中的元素
*删除
字典中的元素
1.
字典的组成及表示方式
1.1.
字典是由许多对相互之间有联系的元素组成,每一对元素都包含一个键(key)和一个
值(
value)。
这种元素称为键
值对,一般记作键:
值 (key:
value)。
字典的表示方法是,大括号内若干对键
值对排列在一起,它们之间用逗号隔开。例子如下:对应的
值
1.1.1.1我们可以通过元素的键来
获取它的
值,也可以添加另外的键
值来改动
字典,
字典型对于键的存储没有特定的顺序。
获取一个
字典中的key,
value值有多种方法,现总结一下,直接上代码:
dictss={'username': 'zhouchuanlun', 'code': '66666'}
# #
获取key
值,
value值
for k,v in dictss.items():
print(k,v)
# #方法1:
获取key
值
for name in dictss.keys():
print(name.title())
# #方法2:
获取key
值
for name in dictss:
在node.js中,有时候需要获取字典模型里面的所有value值,可以使用underscore模块,
安装underscore模块,npm install underscore --save
在js文件中,引用var underscore = require('underscore');就可以 直接获取了。
var underscore = require('underscore');...
eval()函数会将传入的字符串当做JavaScript代码进行执行。语法eval(string)
参数string
一串表示JavaScript表达式,语句, 或者是一系列语句的字符串。表达式可以包括变量以及已存在对象的属性。
返回值执行指定代码之后的返回值。如果返回值为空,返回undefined描述eval()是全局对象的一个函数属性。eval()的参数是一个字符串。如果字符串表示的是表达式
情况一:最大
值只有一个,只
获取最大
值(
value)所对应的键(key)
情况二:最大
值只有一个,同时
获取最大
值(
value)和所对应的键(key)
情况三:最大
值有多个,
获取所有最大
值(
value)所对应的键(key)
情况一:最大
值只有一个,只
获取最大
值的键
方法一:
使用 get
>>> dict = {'two': 2, 'one': 1,...
目录字典`keys()`、`values()`和`items()`方法`in`和`not in``get()`方法`setdefault()`方法字典和字符串嵌套
像列表一样,字典也是许多值的集合。字典的索引被称为键,不只是整数,可以是其它类型。键及其关联的值称为键-值对。例如:
cat = {'size': 'fat', 'color': 'gray', 'disposition': 'loud'}
字典由大括号{和}开头和结束,冒号:前表示键,冒号后表示值,多个键-值对用逗号分隔。可用键作为索引
json_string = '{"key1": "
value1", "key2": "
value2"}'
dictionary = json.loads(json_string)
print(dictionary)
# 输出:{'key1': '
value1', 'key2': '
value2'}
也可以
使用 `ast` 库的 `literal_
eval` 函数,例如:
import ast
dict_string = "{'key1': '
value1', 'key2': '
value2'}"
dictionary = ast.literal_
eval(dict_string)
print(dictionary)
# 输出:{'key1': '
value1', 'key2': '
value2'}
Authorization not available. Check if polkit service is running or see debug message for more
weixin_42096193:
Authorization not available. Check if polkit service is running or see debug message for more
liuskyter:
Authorization not available. Check if polkit service is running or see debug message for more
weixin_42096193: