我的代码如下,
prices = {'banana':'4', 'apple':'2', 'orange':'1.5', 'pear':'3'}
stock = {'banana':6, 'apple':0, 'orange':32, 'pear':15}
print(prices.keys)
print("price :" + str(prices.values))
print("stock :" + str(stock.values))
我不明白为什么我会吐出一个看起来好像我要求的类型。是什么赋予了?
实际上,我的代码逻辑是错误的。
我希望代码吐出以下内容
键 价格:价值 股票:价值
例如,这应该是它的外观
苹果 价格:2 股票:0
答案 0 :(得分:6)
你需要调用方法来获得有用的东西:
print (prices.keys())
然而,在python3.x中,这仍然不是特别适合打印,因为它会打印你可能不想看到的额外垃圾。
您可能需要考虑对str.join
或dict.keys()
返回的对象使用dict.values()
:
print (' '.join(prices.keys()))
str.join
几乎可以满足您的期望。左侧的字符串是在您传递给join
的可迭代中的每个元素之间插入的分隔符。例如:
"!".join(["foo","bar","baz"])
将生成字符串:"foo!bar!baz"
。这里唯一的问题是,传递给str.join
的iterable中的每个元素都必须是一个字符串。
至于你的编辑,
prices = {'banana':'4', 'apple':'2', 'orange':'1.5', 'pear':'3'}
stock = {'banana':6, 'apple':0, 'orange':32, 'pear':15}
prices.keys() & stock.keys() #{'orange', 'pear', 'banana', 'apple'}
for item in (prices.keys() & stock.keys()):
print (item,"price:",prices[item],"stock:",stock[item])
输出:
orange price: 1.5 stock: 32
pear price: 3 stock: 15
banana price: 4 stock: 6
apple price: 2 stock: 0
似乎就是你想要的。
答案 1 :(得分:3)
prices = {'banana':'4', 'apple':'2', 'pear':'3'}
stock = {'banana':6, 'orange':32, 'pear':15}
for item in (prices.keys() & stock.keys()):
print (item,"price:",prices.get(item,'-'),"stock:",stock.get(item,0))
可生产
orange price: - stock: 32
pear price: 3 stock: 15
banana price: 4 stock: 6
apple price: 2 stock: 0
如果股票和价格字典在每个字典中包含不同的friuts('keys'),则使用get with default将会有所帮助。 .get()
函数在这里确实有用。
正如mgilson所提到的,下面一行是创建全套水果的地方。
prices.keys() & stock.keys() #{'orange', 'pear', 'banana', 'apple'}
我也使用
之前的设置完成了这项工作set(prices.keys().extend(stock.keys())
但我更喜欢&
方法。
答案 2 :(得分:1)
前两个答案建议使用<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/web_view_relative_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/activity_main">
<View
android:id="@+id/divider"
android:layout_width="0dp"
android:layout_height="1dp"
android:background="?android:attr/listDivider"
app:layout_constraintBottom_toTopOf="@id/web_view_documentation"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<WebView
android:id="@+id/web_view_documentation"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@id/native_banner_ad_container"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/divider"/>
<RelativeLayout
android:id="@+id/native_banner_ad_container"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/web_view_documentation"/>
</android.support.constraint.ConstraintLayout>
,但是note that会返回.keys()
类型的对象,而不是像字符串列表那样的可索引对象。要以字符串形式获取键列表,只需将字典转换为列表即可:dict_keys
。
list(my_dict)
答案 3 :(得分:0)
由于两个词典/对象都具有相同的键,因此您可以使用简单的for循环迭代其中一个词典并打印每个项目的价格和库存。
prices = {"banana": 4, "apple": 2, "orange": 1.5, "pear": 3}
stock = {"banana": 6, "apple": 0, "orange": 32, "pear": 15}
for key in prices:
print "stock: %s" % stock[key]
print "prices: %s" % prices[key]
答案 4 :(得分:0)
prices = {"banana": 4, "apple": 2, "orange": 1.5, "pear": 3}
stock = {"banana": 6, "apple": 0, "orange": 32, "pear": 15}
for key in prices:
print key
print "stock: %s" % stock[key]
print "prices: %s" % prices[key]
输出:
orange
stock: 32
prices: 1.5
pear
stock: 15
prices: 3
banana
stock: 6
prices: 4
apple
stock: 0
prices: 2
=> None