python处理列表中字典_Python中列表和字典有什么区别,分别适用于什么场景?

1、从底层实现来区分

Python 中list 是C 语言实现的动态数组。

Python 字典是C语言实现的 哈希表。

2、 List 是对象的序列,list 中的元素可以是同构,也可以异构的。

字典是键值对的哈希表。列表是元素的有序集合。 字典是无序的集合。

列表和字典对象是可变的,即可以添加新项目或删除项目。

3、具体语法,请看help()

help(list)

Help on class list in module builtins:

class list(object)

| list() -> new empty list

| list(iterable) -> new list initialized from iterable's items

|

| Methods defined here:

|

| __add__(self, value, /)

| Return self+value.

|

| __contains__(self, key, /)

| Return key in self.

|

| __delitem__(self, key, /)

| Delete self[key].

|

| __eq__(self, value, /)

| Return self==value.

|

| __ge__(self, value, /)

| Return self>=value.

|

| __getattribute__(self, name, /)

| Return getattr(self, name).

|

| __getitem__(...)

| x.__getitem__(y) <==> x[y]

|

| __gt__(self, value, /)

| Return self>value.

|

| __iadd__(self, value, /)

| Implement self+=value.

|

| __imul__(self, value, /)

| Implement self*=value.

|

| __init__(self, /, *args, **kwargs)

| Initialize self. See help(type(self)) for accurate signature.

|

| __iter__(self, /)

| Implement iter(self).

|

| __le__(self, value, /)

| Return self<=value.

|

| __len__(self, /)

| Return len(self).

|

| __lt__(self, value, /)

| Return self

|

| __mul__(self, value, /)

| Return self*value.n

|

| __ne__(self, value, /)

| Return self!=value.

|

| __new__(*args, **kwargs) from builtins.type

| Create and return a new object. See help(type) for accurate signature.

|

| __repr__(self, /)

| Return repr(self).

|

| __reversed__(...)

| L.__reversed__() -- return a reverse iterator over the list

|

| __rmul__(self, value, /)

| Return self*value.

|

| __setitem__(self, key, value, /)

| Set self[key] to value.

|

| __sizeof__(...)

| L.__sizeof__() -- size of L in memory, in bytes

|

| append(...)

| L.append(object) -> None -- append object to end

|

| clear(...)

| L.clear() -> None -- remove all items from L

|

| copy(...)

| L.copy() -> list -- a shallow copy of L

|

| count(...)

| L.count(value) -> integer -- return number of occurrences of value

|

| extend(...)

| L.extend(iterable) -> None -- extend list by appending elements from the iterable

|

| index(...)

| L.index(value, [start, [stop]]) -> integer -- return first index of value.

| Raises ValueError if the value is not present.

|

| insert(...)

| L.insert(index, object) -- insert object before index

|

| pop(...)

| L.pop([index]) -> item -- remove and return item at index (default last).

| Raises IndexError if list is empty or index is out of range.

|

| remove(...)

| L.remove(value) -> None -- remove first occurrence of value.

| Raises ValueError if the value is not present.

|

| reverse(...)

| L.reverse() -- reverse *IN PLACE*

|

| sort(...)

| L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*

|

| ----------------------------------------------------------------------

| Data and other attributes defined here:

|

| __hash__ = None

help(dict)

Help on class dict in module builtins:

class dict(object)

| dict() -> new empty dictionary

| dict(mapping) -> new dictionary initialized from a mapping object's

| (key, value) pairs

| dict(iterable) -> new dictionary initialized as if via:

| d = {}

| for k, v in iterable:

| d[k] = v

| dict(**kwargs) -> new dictionary initialized with the name=value pairs

| in the keyword argument list. For example: dict(one=1, two=2)

|

| Methods defined here:

|

| __contains__(self, key, /)

| True if D has a key k, else False.

|

| __delitem__(self, key, /)

| Delete self[key].

|

| __eq__(self, value, /)

| Return self==value.

|

| __ge__(self, value, /)

| Return self>=value.

|

| __getattribute__(self, name, /)

| Return getattr(self, name).

|

| __getitem__(...)

| x.__getitem__(y) <==> x[y]

|

| __gt__(self, value, /)

| Return self>value.

|

| __init__(self, /, *args, **kwargs)

| Initialize self. See help(type(self)) for accurate signature.

|

| __iter__(self, /)

| Implement iter(self).

|

| __le__(self, value, /)

| Return self<=value.

|

| __len__(self, /)

| Return len(self).

|

| __lt__(self, value, /)

| Return self

|

| __ne__(self, value, /)

| Return self!=value.

|

| __new__(*args, **kwargs) from builtins.type

| Create and return a new object. See help(type) for accurate signature.

|

| __repr__(self, /)

| Return repr(self).

|

| __setitem__(self, key, value, /)

| Set self[key] to value.

|

| __sizeof__(...)

| D.__sizeof__() -> size of D in memory, in bytes

|

| clear(...)

| D.clear() -> None. Remove all items from D.

|

| copy(...)

| D.copy() -> a shallow copy of D

|

| fromkeys(iterable, value=None, /) from builtins.type

| Returns a new dict with keys from iterable and values equal to value.

|

| get(...)

| D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.

|

| items(...)

| D.items() -> a set-like object providing a view on D's items

|

| keys(...)

| D.keys() -> a set-like object providing a view on D's keys

|

| pop(...)

| D.pop(k[,d]) -> v, remove specified key and return the corresponding value.

| If key is not found, d is returned if given, otherwise KeyError is raised

|

| popitem(...)

| D.popitem() -> (k, v), remove and return some (key, value) pair as a

| 2-tuple; but raise KeyError if D is empty.

|

| setdefault(...)

| D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D

|

| update(...)

| D.update([E, ]**F) -> None. Update D from dict/iterable E and F.

| If E is present and has a .keys() method, then does: for k in E: D[k] = E[k]

| If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v

| In either case, this is followed by: for k in F: D[k] = F[k]

|

| values(...)

| D.values() -> an object providing a view on D's values

|

| ----------------------------------------------------------------------

| Data and other attributes defined here:

|

| __hash__ = None

4、凡是保存序列的数据,就可以用list

凡是用到键值对的地方,就可以用字典。

请看例子:

list 的应用。

# coding:utf-8

"""

Python核心编程6-14习题的解题思路

设计一个"石头,剪子,布"游戏,有时又叫"Rochambeau",你小时候可能玩过,下面是规则.

你和你的对手,在同一时间做出特定的手势,必须是下面一种手势:石头,剪子,布.胜利者从

下面的规则中产生,这个规则本身是个悖论.

(a) 布包石头.

(b)石头砸剪子,

(c)剪子剪破布.在你的计算机版本中,用户输入她/他的选项,计算机找一个随机选项,然后由你

的程序来决定一个胜利者或者平手.注意:最好的算法是尽量少的使用 if 语句.

Python培训 黄哥所写 python2

"""

import random

guess_list = ["石头", "剪刀", "布"]

win_combination = [["布", "石头"], ["石头", "剪刀"], ["剪刀", "布"]]

while True:

computer = random.choice(guess_list)

people = raw_input('请输入:石头,剪刀,布\n').strip()

if people not in guess_list:

continue

elif computer == people:

print "平手,再玩一次!"

elif [computer, people] in win_combination:

print "电脑获胜,再玩,人获胜才能退出!"

else:

print "人获胜!"

break

字典的应用:黄哥:Python用字典来统计单词或汉字词的个数。​zhuanlan.zhihu.comzhihu-card-default.svg

爬虫中的 headers 都可以用到字典

# coding:utf-8

import requests

from bs4 import BeautifulSoup

class SpiderProxy(object):

"""黄哥Python培训 黄哥所写 Python版本为2.7以上"""

headers = {

"Host": "www.xicidaili.com",

"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:47.0) Gecko/20100101 Firefox/47.0",

"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",

"Accept-Language": "en-US,en;q=0.5",

"Accept-Encoding": "gzip, deflate",

"Referer": "http://www.xicidaili.com/wt/1",

}

def __init__(self, session_url):

self.req = requests.session()

self.req.get(session_url)

def get_pagesource(self, url):

html = self.req.get(url, headers=self.headers)

return html.content

def get_all_proxy(self, url, n):

data = []

for i in range(1, n):

html = self.get_pagesource(url + str(i))

soup = BeautifulSoup(html, "lxml")

table = soup.find('table', id="ip_list")

for row in table.findAll("tr"):

cells = row.findAll("td")

tmp = []

for item in cells:

tmp.append(item.find(text=True))

data.append(tmp[1:3])

return data

session_url = 'http://www.xicidaili.com/wt/1'

url = 'http://www.xicidaili.com/wt/'

p = SpiderProxy(session_url)

proxy_ip = p.get_all_proxy(url, 10)

for item in proxy_ip:

if item:

print item

补充一下,时间复杂度的区别

list

dictTimeComplexity - Python Wiki​wiki.python.org

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值